を使用するときに、変数に含まれる文字列の数を知りたいistringstream
:
string cadena;
int num;
istringstream ss(cadena);
ss >> num;
int n = ss.size(); // This doesn't work
たとえば、 if cadena
is:"1 2 3 4"
を使用するistringstream
と、文字列の数を知りたいss
(この場合は 4)。
を使用するときに、変数に含まれる文字列の数を知りたいistringstream
:
string cadena;
int num;
istringstream ss(cadena);
ss >> num;
int n = ss.size(); // This doesn't work
たとえば、 if cadena
is:"1 2 3 4"
を使用するistringstream
と、文字列の数を知りたいss
(この場合は 4)。
私が知っている唯一の方法は、文字列を解析して確認することです。std::distance
あなたのためにそれをするistream_iterator
ことができます:
std::distance(std::istream_iterator<string>(ss),
std::istream_iterator<string>());
#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;
}
次のようなことができます、whileループを追加します
while(ss>>cadena) {