1

を使用するときに、変数に含まれる文字列の数を知りたいistringstream:

string cadena;
int num;

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

たとえば、 if cadenais:"1 2 3 4"を使用するistringstreamと、文字列の数を知りたいss(この場合は 4)。

4

3 に答える 3

2

私が知っている唯一の方法は、文字列を解析して確認することです。std::distanceあなたのためにそれをするistream_iteratorことができます:

std::distance(std::istream_iterator<string>(ss), 
              std::istream_iterator<string>());
于 2012-03-02T18:44:26.693 に答える
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;
}
于 2012-03-02T18:46:36.123 に答える
0

次のようなことができます、whileループを追加します

while(ss>>cadena) {

于 2013-07-19T03:31:15.560 に答える