c++ - 按指定的分隔符拆分 wstring

标签 c++ string split

我有一个包含文本的 std::wstring 变量,我需要用分隔符将它拆分。我怎么能这样做?我不会使用会产生一些警告的 boost。谢谢

编辑 1 这是一个示例文本:

hi how are you?

这是代码:

typedef boost::tokenizer<boost::char_separator<wchar_t>, std::wstring::const_iterator, std::wstring> Tok;

boost::char_separator<wchar_t> sep;

Tok tok(this->m_inputText, sep);

for(Tok::iterator tok_iter = tok.begin(); tok_iter != tok.end(); ++tok_iter)
{
    cout << *tok_iter;
}

结果是:

  1. 如何
  2. ?

我不明白为什么最后一个字符总是拆分成另一个标记...

最佳答案

在您的代码中,问号出现在单独的一行中,因为这是默认情况下 boost::tokenizer 的工作方式。

如果您想要的输出是四个标记(“hi”、“how”、“are”和“you?”),您可以

a) 将您使用的 char_separator 更改为

boost::char_separator<wchar_t> sep(L" ", L"");

b) 使用 boost::split,我认为这是对“按指定字符拆分 wstring”的最直接回答

#include <string>
#include <iostream>
#include <vector>
#include <boost/algorithm/string.hpp>

int main()
{

        std::wstring m_inputText = L"hi how are you?";

        std::vector<std::wstring> tok;
        split(tok, m_inputText, boost::is_any_of(L" "));

        for(std::vector<std::wstring>::iterator tok_iter = tok.begin();
                        tok_iter != tok.end(); ++tok_iter)
        {
                std::wcout << *tok_iter << '\n';
        }

}

试运行:https://ideone.com/jOeH9

关于c++ - 按指定的分隔符拆分 wstring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5425092/

相关文章:

c++ - 错误 : expression must have constant value. 对于一个明显的常量值

iphone - 在 for 循环中附加字符串 (NSString) 时遇到问题

java - 难以弄清楚java中split函数的工作原理

c# - c#中字符串中最后一个逗号之前的所有元素

c++ - 使用 static 关键字为全局字符串变量添加前缀是否会减少整体程序大小?

c++ - 将 QVariant 从 QML 传递到 C++

c++ - fread 可以是不可租的吗?

javascript - 如何从字符串中删除文本?

Javascript:在输入的特定偏移位置附加字符串

input - Hadoop 多次读取输入拆分