c++ - .eof() 使用数组时替换
问题描述
所以最近我了解到使用 .eof 可以被认为是一种大禁忌,我想开始远离它。我见过的主要替代品之一是使用
while(inFile >> num)
{
}
但是,当我使用数组执行此操作时,它只存储第一个输入而没有其他内容。有小费吗?
例子:
while(inMovie >> title[x])
{
inMovie >> income[x];
x++;
}
解决方案
你真正想做的是:
while ((inMovie >> title[x]) && (inMovie >> income[x]))
{
x++;
}
或者,更简洁地说:
while (inMovie >> title[x] >> income[x])
{
x++;
}
这样,两个输入操作都必须“成功”才能继续。
话虽如此,您的尝试本身并没有破坏任何东西,只要输入正确,它就没有理由“只存储第一个输入”。
检查您的输入。
我还担心您可能没有正确使用数组。您的数组是否有足够的空间容纳所有这些元素?还是您期望title
并income
自动扩展?因为他们不会那样做。在这种情况下,您的程序具有未定义的行为(可能会产生各种奇怪的结果!),您应该考虑改用向量。
推荐阅读
- java - 如何使用文件资源管理器 Android Studio 将歌曲添加到我的歌曲播放列表?
- c# - C# Linq 将多个值组合成数据行
- python - \2 表示正则表达式
- java - 为什么 Firestore DocumentSnapshot 数据大小始终为零?
- java - 对于使用 Slick 的 Rep[Optional[...]] 的产量
- r - 如何在R中将入住和退房日期分解为每日级别?
- c - C Realloc 导致分段错误
- python - 从给定的.txt文件python中读取文件名
- javascript - 带有 react-router 的 React SPA 应用程序中的 Google Tag Manager
- javascript - 内容搜索字段的值也有一个字段