首页 > 解决方案 > .eof() 使用数组时替换

问题描述

所以最近我了解到使用 .eof 可以被认为是一种大禁忌,我想开始远离它。我见过的主要替代品之一是使用

while(inFile >> num)
{

}

但是,当我使用数组执行此操作时,它只存储第一个输入而没有其他内容。有小费吗?

例子:

while(inMovie >> title[x])
{
    inMovie >> income[x];
    x++;
}

标签: c++

解决方案


你真正想做的是:

while ((inMovie >> title[x]) && (inMovie >> income[x]))
{
   x++;
}

或者,更简洁地说:

while (inMovie >> title[x] >> income[x])
{
   x++;
}

这样,两个输入操作都必须“成功”才能继续。

话虽如此,您的尝试本身并没有破坏任何东西,只要输入正确,它就没有理由“只存储第一个输入”。

检查您的输入。

我还担心您可能没有正确使用数组。您的数组是否有足够的空间容纳所有这些元素?还是您期望titleincome自动扩展?因为他们不会那样做。在这种情况下,您的程序具有未定义的行为(可能会产生各种奇怪的结果!),您应该考虑改用向量。


推荐阅读