试图将一个句子分成C ++中的单词向量

时间:2018-03-18 22:54:10

标签: c++ string vector split

我试图通过将字符串句子拆分为空格字符来将字符串句子转换为单词矢量。

void turnVect(string str)
{
    int i, prevPos = 0;
    for (i = 0; i < str.length(); i++)
    {
        if (str[i] == ' ')
        {
            words.push_back(str.substr(prevPos, i));
            prevPos = i + 1;
        }
    }
}

int main()
{
    turnVect("Hello my name is");
    cout << words.size() << endl;
    cout << words[0] << endl;
    cout << words[1] << endl;
    cout << words[2];
    return 0;
}

到目前为止我得到了这个输出,这绝对不是我所期望的。有什么帮助吗?

3
Hello
my name
name is

2 个答案:

答案 0 :(得分:1)

@kartikay,Alexandre的解决方案是一种更好的方法,但是如果你想知道为什么你的解决方案失败了,那是因为std :: string :: substr的参数是位置和计数,而不是开始和结束位置。所以你可以这样做:

words.push_back(str.substr(prevPos, i - prevPos));

答案 1 :(得分:0)

试试这个:

#include <iostream>
#include <string>
#include <boost/tokenizer.hpp>

using namespace std;
using namespace boost;

int main(int argc, char** argv)
{
    string text = "token test string";

    char_separator<char> sep(" ");
    tokenizer<char_separator<char>> tokens(text, sep);
    for (const string& t : tokens)
    {
        cout << t << "." << endl;
    }
}

取自here