byt*_*e77 7 c++ string vector wstring
此问题显示如何使用单个字符分隔符将a拆分string为a .vector
然而,应用这种技术wstring并不像我想象的那么容易.因此,这绝对不是重复!
wstringstream stringStream(str);
istream_iterator<wstring> begin(stringStream);
istream_iterator<wstring> end;
List = vector<wstring>(begin, end);
copy(List.begin(), List.end(), ostream_iterator<wstring>(cout, ";"));
Run Code Online (Sandbox Code Playgroud)
第二行无法使用VS2015进行编译.并使用istream_iterator<wstring, wchar_t>导致编译错误iterator.h.
我怎样才能分割std::wstring成std::vector由分离";"?
您无法在示例中使用该方法.该方法依赖于输入是空白分隔.在你的问题中,你说你的字符串是;分开的"the;quick;brown;fox".为此,您可以使用std:getlinewith ';'作为分隔符来分解字符串.
std::wstring str = L"the;quick;brown;fox", temp;
std::vector<std::wstring> parts;
std::wstringstream wss(str);
while(std::getline(wss, temp, L';'))
parts.push_back(temp);
Run Code Online (Sandbox Code Playgroud)
上面将字符串加载到流中,然后将继续调用std::getline,';'直到它到达流的末尾.
我还想指出,如果您的第二个示例拆分了您不会看到的数据
copy(List.begin(), List.end(), ostream_iterator<wstring>(cout, ";"));
Run Code Online (Sandbox Code Playgroud)
会把';' 回到弦中.它也需要std::wcout而不是std::cout你处理宽字符.
根据cppreference ctype有两个不同的专业,char并且wchar_t具有不同的功能.你不能只是改变所有出现ctype<char>与ctype<wchar_t>和做的ctype<wchar_t>是缺少第二个示例使用功能