Program Listing for File SplitJoin.h#
↰ Return to documentation for file (src/util/StringUtility/SplitJoin.h)
#ifndef ROSE_StringUtility_SplitJoin_H
#define ROSE_StringUtility_SplitJoin_H
#include <Constants.h>
#include <rosedll.h>
#include <list>
#include <sstream>
#include <string>
#include <vector>
namespace Rose {
namespace StringUtility {
// Splitting and joining strings
ROSE_UTIL_API std::vector<std::string> split(const std::string &separator, const std::string &str, size_t maxparts = UNLIMITED,
bool trim_white_space = false);
ROSE_UTIL_API std::vector<std::string> split(char separator, const std::string &str, size_t maxparts = UNLIMITED,
bool trim_white_space = false);
ROSE_UTIL_API std::list<std::string> tokenize(const std::string&, char delim);
template<class Iterator>
std::string join_range(const std::string &separator, Iterator begin, Iterator end) {
std::ostringstream retval;
for (Iterator i=begin; i!=end; ++i)
retval <<(i==begin ? std::string() : separator) <<*i;
return retval.str();
}
template<class Container>
std::string join(const std::string &separator, const Container &container) {
return join_range(separator, container.begin(), container.end());
}
template<class Container>
std::string join(char separator, const Container &container) {
return join_range(std::string(1, separator), container.begin(), container.end());
}
ROSE_UTIL_API std::string join(const std::string &separator, char *strings[], size_t nstrings);
ROSE_UTIL_API std::string join(const std::string &separator, const char *strings[], size_t nstrings);
ROSE_UTIL_API std::string join(char separator, char *strings[], size_t nstrings);
ROSE_UTIL_API std::string join(char separator, const char *strings[], size_t nstrings);
ROSE_UTIL_API std::string joinEnglish(const std::vector<std::string> &phrases,
const std::string &separator = ",",
const std::string &finalIntro = "and");
// Container versus scalar functions
//
// Functions that convert containers of things to a string and vice versa.
ROSE_UTIL_API std::string listToString(const std::list<int>&, bool separateStrings = false);
ROSE_UTIL_API std::string listToString(const std::list<std::string>&, bool separateStrings = false);
ROSE_UTIL_API std::string listToString(const std::vector<std::string>&, bool separateStrings = false);
ROSE_UTIL_API std::list<std::string> stringToList(const std::string&);
ROSE_UTIL_API void splitStringIntoStrings(const std::string& inputString, char separator, std::vector<std::string>& stringList);
} // namespace
} // namespace
#endif