首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何拆分wstring

如何拆分wstring
EN

Stack Overflow用户
提问于 2017-01-19 12:02:19
回答 3查看 2.5K关注 0票数 2

我有一个wstring变量,我想将它除以空格字符并放入一个vector

代码语言:javascript
复制
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语句中

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-19 12:03:59

那是因为你在比较两个指针。这两个指针永远不会是一样的。相反,比较字符

代码语言:javascript
复制
if (wStr[i] == L' ') ...

与此相关的一点是,这并不是在空间上拆分字符串的最简单方法。试一试:

代码语言:javascript
复制
std::wistringstream wis(wStr);
std::vector<std::wstring> wv(std::istream_iterator<std::wstring, wchar_t>(wis), {});
票数 6
EN

Stack Overflow用户

发布于 2017-01-19 12:09:34

wStr[i]wStr包含的缓冲区的i第四个字符。

&wStr[i]是该字符的内存地址。

&wStr[i] == L" "比较字符串对象的缓冲区中i第四字符的内存地址和字符串文字的内存地址。

由于字符串文本不是string对象的缓冲区,也不是缓冲区中的缓冲区,所以等式比较永远不为真。

也许您打算比较字符的值:wStr[i] == L' '

票数 3
EN

Stack Overflow用户

发布于 2021-04-25 15:48:27

我编写了一个用于wstring令牌程序长度大于1的标记程序:

代码语言:javascript
复制
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;
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41741331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档