使用空格作为分隔符在C/C++中拆分一行

and*_*and 5 c c++

可能重复:
如何在C++中对字符串进行标记?

伪代码:

    Attributes[] = Split line(' ')
Run Code Online (Sandbox Code Playgroud)

怎么样?

我一直这样做:

  char *pch;
  pch = strtok(line," ");
  while(pch!=NULL)
  {
      fputs ( pch, stdout ); 


  }
Run Code Online (Sandbox Code Playgroud)

并获得一个非书面,卡住的退出文件.这有什么问题吗?好吧,事情甚至没有满足我的伪代码要求,但我对如何将令牌(作为char数组)索引到我的数组感到困惑,我想我应该写一个2-dim数组?

Don*_*nie 8

使用strtok" "作为您的分隔符.


Ste*_*end 5

这不是一个重复 - 对于C++来说,请看@vunino 在这里接受的答案.

下面的基本代码,但要看到答案的完全辉煌的优雅,你将不得不点击它.

#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>

int main() {
    using namespace std;
    string sentence = "Something in the way she moves...";
    istringstream iss(sentence);
    copy(istream_iterator<string>(iss),
             istream_iterator<string>(),
             ostream_iterator<string>(cout, "\n"));
}
Run Code Online (Sandbox Code Playgroud)

这取决于以下事实:默认情况下,istream_iterator将空格视为其分隔符.生成的标记将写入cout单独的行(每个在ostream_iterator的构造函数重载中指定的分隔符).