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

时间:2010-11-12 23:42:08

标签: c++ c

  

可能重复:
  How do I tokenize a string in C++?

伪代码:

    Attributes[] = Split line(' ')

如何?

我一直这样做:

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


  }

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

3 个答案:

答案 0 :(得分:8)

strtok" "一起用作分隔符。

答案 1 :(得分:5)

这不是一个重复 - 对于C ++,请查看并提升@Zunino接受的答案here

下面的基本代码,但要看到答案的全部光荣优雅,你必须点击它。

#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"));
}

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

答案 2 :(得分:1)

最简单的方法是boost::split

std::vector<std::string> words;
boost::split(words, your_string, boost::is_space());