Найдите, сколько строк в istringstream - PullRequest
0 голосов
/ 02 марта 2012

Я хочу знать, сколько строк в моей переменной, когда я использую 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 ]

2 голосов
/ 02 марта 2012

Единственный способ, который я знаю, это разобрать строки, чтобы увидеть.std::distance с istream_iterator может сделать это для вас:

std::distance(std::istream_iterator<string>(ss), 
              std::istream_iterator<string>());
1 голос
/ 02 марта 2012
#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;
}
0 голосов
/ 19 июля 2013

Вы можете сделать что-то вроде, добавить цикл while

while(ss>>cadena) {

...