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