Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 查找istringstream中有多少字符串_C++_Istringstream - Fatal编程技术网

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;
}