如何拆分字符串
How to split a wstring
我有一个wstring
变量,我想按空格字符将其拆分并放入vector
wstring wStr = L"Hello World !";
vector<wstring> vw;
wstring st = L"";
for (int i = 0; i < wStr.length(); i++) {
if (&wStr[i] == L" ") {
vw.push_back(st);
}
else{
st += wStr[i];
}
}
我的结果应该是这样的vector
:
你好
世界
!
但它没有进入 if 语句
那是因为你正在比较两个指针。这两个指针永远不会相同。而是比较字符:
if (wStr[i] == L' ') ...
在
相关说明中,这不是在空间上拆分字符串的最简单方法。试试这个:
std::wistringstream wis(wStr);
std::vector<std::wstring> wv(std::istream_iterator<std::wstring, wchar_t>(wis), {});
wStr[i]
是wStr
包含的缓冲区的第i
个字符。
&wStr[i]
是该字符的内存地址。
&wStr[i] == L" "
字符串对象的缓冲区中第 i
个字符的内存地址与字符串文本的内存地址进行比较。
由于字符串文本不是字符串对象的缓冲区,也不是缓冲区内的缓冲区,因此相等比较永远不会成立。
也许您打算比较字符的值:wStr[i] == L' '
.
我写了一个适用于wstring
分词器长度大于 1
std::vector<std::wstring> splitString(std::wstring w, std::wstring tokenizerStr) {
std::vector<std::wstring> result;
long tokeninzerLength = tokenizerStr.length();
long position = 0;
long findIndex = w.find(tokenizerStr, position);
while (findIndex != -1)
{
wstring str = w.substr(position, findIndex - position);
result.push_back(str);
position = findIndex + tokeninzerLength;
findIndex = w.find(tokenizerStr, position);
}
result.push_back(w.substr(position, w.length() - position));
return result;
}
相关文章:
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- 将字符串拆分为等长 c++ 的部分
- 如何使用 Boost C++ 打印第 n 个字符串拆分?
- 我在将字符串拆分为向量时遇到困难
- C++ 如何将字符串拆分为单个字符
- 是否有用于执行反向字符串拆分器的开箱即用功能?
- 如何将字符串拆分为一组 3 个字符,它们之间有空格
- 将字符串拆分为单个单词并将它们放置在向量中
- 基于其中的数字子字符串拆分字符串
- 如何在C++中将数字字符串拆分为数组
- 如何在 c++ 中将字符串拆分为字符串 2d 数组数组
- 如何将标准::字符串拆分为标准::string_views的范围 (v3)
- 将特定格式的字符串拆分为浮点数和字符串
- 在 c++ 中将字符串拆分为单独的变量
- 用C 中的4个字符将字符串拆分
- 如何用Arduino中的另一个字符串将字符串拆分
- 如何在 Main 方法之外将字符串拆分为标记
- C 将字符串按空白空间将字符串拆分,除非将其封闭在引号中并存储在向量中
- 将字符串拆分为矢量 C++
- 试图将字符串拆分为两个整数