C++标准库里没有字符分割函数split(), 需要自己实现。
方法一####
参考StackOverflow,写了一个支持wstring的split。输入原始字符串和分隔符,输出vector<分割字符串>。核心思想是使用 wstringstream 作为 std::getline 的输入。
void split(const std::wstring &s, TCHAR delim, std::vector<std::wstring> &elems) {
std::wstringstream ss;
ss.str(s);
std::wstring item;
while (std::getline(ss, item, delim)) {
elems.push_back(item);
}
}
std::vector<std::wstring> split(const std::wstring &s, TCHAR delim) {
std::vector<std::wstring> elems;
split(s, delim, elems);
return elems;
}
vector<wstring> vec = split(L"C:\\Windows\\System32;C:\\Windows;C:\\Windows\\System32\\Wbem", L';');//分割环境变量
方法二####
公司项目中常使用boost库,一个函数直接搞定。不过缺点也很明显,太重。
vector<wstring> vecPaths;
wstring wstrEnvPath = L"C:\\Windows\\System32;C:\\Windows;C:\\Windows\\System32\\Wbem";
boost::algorithm::split(vecPaths, wstrEnvPath, boost::algorithm::is_any_of(L";"));