gpt4 book ai didi

c++ - 将 std::wstring 拆分为 std::vector

转载 作者:可可西里 更新时间:2023-11-01 18:31:07 27 4
gpt4 key购买 nike

这个问题展示了如何拆分 string进入vector使用单个字符定界符。

问题:Right way to split an std::string into 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, ";"));

第二行无法使用VS2015编译。并使用 istream_iterator<wstring, wchar_t>iterator.h 中导致编译错误.

如何拆分 std::wstring进入std::vector";" 分隔?

最佳答案

您将无法在示例中使用该方法。该方法依赖于以空格分隔的输入。在你的问题中你说你的字符串 a ;"the;quick;brown;fox"一样分开.为此,您可以使用 std:getline';'作为分隔字符串的分隔符。

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);

上面的代码将字符串加载到流中,然后将继续调用 std::getline打破';'直到它到达流的末尾。

我还想指出,如果您的第二个示例拆分了您不会看到的数据

copy(List.begin(), List.end(), ostream_iterator<wstring>(cout, ";"));

将把';'马上回到字符串中。它还需要 std::wcout而不是 std::cout因为你正在处理宽字符。

根据cppreference ctype char 有两个不同的专业和 wchar_t并且有不同的功能。您不能只更改所有出现的 ctype<char>ctype<wchar_t>并完成为 ctype<wchar_t>缺少第二个示例使用的函数

关于c++ - 将 std::wstring 拆分为 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36812132/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com