Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.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++ 数组中多余的不需要的数据_C++ - Fatal编程技术网

C++ 数组中多余的不需要的数据

C++ 数组中多余的不需要的数据,c++,C++,当我去打印我的数组时,它会打印,但最后会有额外的数据。额外的数据在应该存在的最后一行输出之后一行。它包含:“-13096448”(注意,它以空格开头。) 检查转换是否成功 bool input (ifstream &infile, string &names, int &numoftoys) { infile >> names; if (infile.fail()) return false; infile >> numoftoys;

当我去打印我的数组时,它会打印,但最后会有额外的数据。额外的数据在应该存在的最后一行输出之后一行。它包含:“-13096448”(注意,它以空格开头。)


检查转换是否成功

bool input (ifstream &infile, string &names, int &numoftoys)
{
  infile >> names;
  if (infile.fail()) return false;
  infile >> numoftoys;
  if (infile.fail()) return false;
  return true;
}
因此,您可以像这样使用它:

if (input(...)) { /* valid data */ }

输入循环存在多个问题。它可能应该读如下内容:

while ((infile >> names[i]) && (infile >> numoftoys[i]))
{
      ++i;
}

这样可以避免在输入失败以及文件末尾有空行时处理额外的一行(在这种情况下,最终的
.eof()
测试将成功并且
输入(…)
在继续递增时会失败
i

这是什么类型的文件?如果在记事本中打开,文件的内容是什么样子的?您应该打印i最终值,并将其与预期读取的行数进行比较。基本上,对于空文件,您将通过一次读取循环,我将是一个,因此检查Output循环一次(但没有读取任何数据)。快速修复:第二个循环停止条件可能是pDon't loop
,而(!f.eof())
。这样做几乎总是错误的。如果((infle>>名称)和(&(infle>>numoftoys)),为什么不简单地执行
if (input(...)) { /* valid data */ }
while ((infile >> names[i]) && (infile >> numoftoys[i]))
{
      ++i;
}