Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将字符串拆分为单词向量_C++_String_Stream - Fatal编程技术网

C++ 将字符串拆分为单词向量

C++ 将字符串拆分为单词向量,c++,string,stream,C++,String,Stream,我有一个字符串类似于的“ABC DEF”,末尾有空格。我想将其转换为字符串的向量,如{“ABC”“DEF”},因此我使用了字符串流: string s = "ABC DEF "; stringstream ss(s); string tmpstr; vector<string> vpos; while (ss.good()) { ss >> tmpstr; vpos.push_back(tmpstr); } string s=“ABC DEF”; 溪流s

我有一个
字符串
类似于
的“ABC DEF”
,末尾有空格。我想将其转换为字符串的
向量
,如
{“ABC”“DEF”}
,因此我使用了
字符串流

string s = "ABC DEF ";
stringstream ss(s);
string tmpstr;
vector<string> vpos;
while (ss.good())
{
    ss >> tmpstr;
    vpos.push_back(tmpstr);
}
string s=“ABC DEF”;
溪流ss(s);;
字符串tmpstr;
向量VPO;
while(ss.good())
{
ss>>tmpstr;
vpos.推回(tmpstr);
}
但是,
vpos
的结果是
{“ABC”“DEF”“DEF”}
。为什么最后一个单词会在向量中重复?如果需要使用
stringstream
,正确的代码是什么?

ss.good()
只会告诉您到目前为止情况是否良好。它并没有告诉你下一篇你读的东西会是好的

使用

现在,您首先阅读
tmpstr
,然后检查流的状态。这相当于:

for (;;) {
    istream &result = ss >> tmpstr;
    if (!result) break;
    vpos.push_back(tmpstr);
}
ss.good()。它并没有告诉你下一篇你读的东西会是好的

使用

现在,您首先阅读
tmpstr
,然后检查流的状态。这相当于:

for (;;) {
    istream &result = ss >> tmpstr;
    if (!result) break;
    vpos.push_back(tmpstr);
}

谢谢你的回答。我发现返回值的类型是
istream
,因此我编写了
while(istream obj=ss>>tmpstr)
,但它似乎是错误的。那么
ss>>tmpstr
背后的语法是什么呢?谢谢你的解释!我学到了很多。谢谢你的回答。我发现返回值的类型是
istream
,因此我编写了
while(istream obj=ss>>tmpstr)
,但它似乎是错误的。那么
ss>>tmpstr
背后的语法是什么呢?谢谢你的解释!我学到了很多。@CaptainObvlious:不是真的,不是。基本逻辑:
ss.good()
不能预知未来@轻快赛道-非常正确。投票被撤回。@CaptainObvlious:不太可能,不可能。基本逻辑:
ss.good()
无法预测未来@轻快赛道-非常正确。接近票数的投票被撤回。