c++ - 如何拆分 wstring

标签 c++ c++11

我有一个 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 中应该是这样的:


Hello
World
!

但它不会进入if语句

最佳答案

那是因为您正在比较两个指针。而这两个指针永远不会相同。而是比较字符:

if (wStr[i] == L' ') ...

相关说明,这不是在空间上拆分字符串的最简单方法。试试这个:

std::wistringstream wis(wStr);
std::vector<std::wstring> wv(std::istream_iterator<std::wstring, wchar_t>(wis), {});

关于c++ - 如何拆分 wstring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41741331/

相关文章:

c++ - 使用不带 listen() 的 select,可能吗?

c++ - Qt 创建者 : Widget is not added to layout

c++ - 在后台运行函数直到完成 MinGW + Windows

c++ - 使用常规构造函数进行聚合初始化

c++ - 编译器错误 : looser throw specifier for destuctor

c++ - 在 C++ 中,函数返回类型后的 & 是什么意思?

c# - 跨平台最佳 MVC 模型到 Controller 的消息传递方法(C#、Objective-C++)

c++ - 通过 TCP 套接字发送大的 Base64 字符串

c++ - 对于潜在的 constexpr 对象,所有比较运算符都应该是 constexpr

c++ - 如何安全地将 new 创建的对象传递给构造函数