查找istringstream中有多少个字符串

时间:2012-03-02 18:36:21

标签: c++ istringstream

我想知道当我使用istringstream时,变量中有多少个字符串:

string cadena;
int num;

istringstream ss(cadena);
ss >> num;
int n = ss.size();  // This doesn't work

例如,如果cadena为:"1 2 3 4",则当我使用istringstream时,我想知道ss中有多少字符串(在本例中为4)。

3 个答案:

答案 0 :(得分:2)

我唯一知道的方法就是解析字符串以便查看。 std::distance istream_iterator可以为您做到这一点:

std::distance(std::istream_iterator<string>(ss), 
              std::istream_iterator<string>());

答案 1 :(得分:1)

#include <iostream>
#include <sstream>
#include <algorithm>
#include <ctype.h>

int  main()
{
  std::string str = ss.str();

  // int c = (int) std::count_if (str.begin(), str.end(), isspace) + 1;
  int c = 1;  // 0
  for (unsigned int i = 0; i <str.size(); i++ ) 
    if (isspace(str[i])) 
      c++;
  std::cout << c;
  return 1;
}

答案 2 :(得分:0)

您可以执行类似的操作,添加while循环

while(ss>>cadena) {