C++ 查找istringstream中有多少字符串
我想知道当我使用C++ 查找istringstream中有多少字符串,c++,istringstream,C++,Istringstream,我想知道当我使用istringstream时,变量中有多少字符串: string cadena; int num; istringstream ss(cadena); ss >> num; int n = ss.size(); // This doesn't work 例如,如果cadena是:“1234”,当我使用istringstream时,我想知道ss中有多少字符串(在本例中为4)。我知道的唯一方法是解析字符串以查看标准::距离使用istream\u迭代器可以为您做到这一
istringstream
时,变量中有多少字符串:
string cadena;
int num;
istringstream ss(cadena);
ss >> num;
int n = ss.size(); // This doesn't work
例如,如果
cadena
是:“1234”
,当我使用istringstream
时,我想知道ss
中有多少字符串(在本例中为4)。我知道的唯一方法是解析字符串以查看<代码>标准::距离使用istream\u迭代器
可以为您做到这一点:
std::distance(std::istream_iterator<string>(ss),
std::istream_iterator<string>());
std::distance(std::istream_迭代器(ss),
std::istreamu迭代器();
#包括
#包括
#包括
#包括
int main()
{
std::string str=ss.str();
//int c=(int)std::count_如果(str.begin(),str.end(),isspace)+1;
int c=1;//0
对于(unsigned int i=0;i您可以执行如下操作,添加while循环
while(ss>>cadena){<代码/> > /p> >一个代码> String Strue<代码>不是一个<代码>向量<代码>……你认为哪些字符是终止一个字符串,只有一个空格?我使用Ittring String,因为我不想对数字之间的空格进行计数。如果不提取它们,你将不知道。为什么你想要这个信息?如果你需要数值,只使用“COD”。e> std::istream_迭代器(ss)std::vector
的初始值设定项中的
应该可以做到这一点。这是因为它的名称是std::count\u,如果
。但当然,这并不能告诉您可能有多少字段。仍然无法识别此功能。其想法是不使用循环,但我认为这是不可能的,thx:)当然,在这之后,他读取了流,并且必须再次创建它来重新读取它。@JamesKanze:是的——当然,使用stringstream很容易做到这一点。明显的替代方法是将数据读入向量,然后找到向量的大小。
#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;
}