使用for循环从.txt文件读取结构数组会使其循环两次 我是C++编程新手,我尝试使用Struts数组(如果我用你理解的方式说),我会用。程序确实从文本文件中读取变量,但它读取了2次,可能这不是一个大问题,因为变量没有改变,只是以防万一 struct menesine_temperatura { int diena[10]; int rytas[10]; int pietus[10]; int vakaras[10]; }; int main() { menesine_temperatura mt; int n; ifstream failas("duomenys.txt"); while(!failas.eof()) { failas >> n; cout << n << endl; for(int i = 0; i < n; i++) { failas >> mt.diena[i] >> mt.rytas[i] >> mt.pietus[i] >> mt.vakaras[i]; cout << mt.diena[i] << mt.rytas[i] << mt.pietus[i] << mt.vakaras[i] << endl; } } failas.close(); return 0; } struct menesine_temperaturea { int diena[10]; int rytas[10]; int pietus[10]; int vakaras[10]; }; int main() { 梅内辛温度; int n; ifstream failas(“duomeys.txt”); 而(!failas.eof()) { failas>>n; 迪埃纳山[i]>>雷塔斯山[i]>>皮埃图斯山[i]>>瓦卡拉山[i]; cout
根据您拥有的代码,最后一组数字将被读取两次 下面是一个简单的例子来解释逻辑错误使用for循环从.txt文件读取结构数组会使其循环两次 我是C++编程新手,我尝试使用Struts数组(如果我用你理解的方式说),我会用。程序确实从文本文件中读取变量,但它读取了2次,可能这不是一个大问题,因为变量没有改变,只是以防万一 struct menesine_temperatura { int diena[10]; int rytas[10]; int pietus[10]; int vakaras[10]; }; int main() { menesine_temperatura mt; int n; ifstream failas("duomenys.txt"); while(!failas.eof()) { failas >> n; cout << n << endl; for(int i = 0; i < n; i++) { failas >> mt.diena[i] >> mt.rytas[i] >> mt.pietus[i] >> mt.vakaras[i]; cout << mt.diena[i] << mt.rytas[i] << mt.pietus[i] << mt.vakaras[i] << endl; } } failas.close(); return 0; } struct menesine_temperaturea { int diena[10]; int rytas[10]; int pietus[10]; int vakaras[10]; }; int main() { 梅内辛温度; int n; ifstream failas(“duomeys.txt”); 而(!failas.eof()) { failas>>n; 迪埃纳山[i]>>雷塔斯山[i]>>皮埃图斯山[i]>>瓦卡拉山[i]; cout,c++,arrays,C++,Arrays,根据您拥有的代码,最后一组数字将被读取两次 下面是一个简单的例子来解释逻辑错误 int main() { int n; std::ifstream inf("data.txt"); while ( !inf.eof() ) { inf >> n; std::cout << n << std::endl; } } 在循环的第一次迭代中,10被读入n并打印10。 在循环的第二次迭代中,20被读入n并打印20
int main()
{
int n;
std::ifstream inf("data.txt");
while ( !inf.eof() )
{
inf >> n;
std::cout << n << std::endl;
}
}
在循环的第一次迭代中,10
被读入n
并打印10
。
在循环的第二次迭代中,20
被读入n
并打印20
此时,inf.eof()
仍然是false
。因此,您第三次进入循环。此时,不会向n
读取任何内容,但会打印n
仍然20
和20
的值
逻辑错误是,仅仅因为inf.eof()
是false
,您就假定文件中还有一些数据可以读取
更好的方法是使用:
int main()
{
int n;
std::ifstream inf("data.txt");
while ( inf )
{
if ( inf >> n )
{
std::cout << n << std::endl;
}
}
}
intmain()
{
int n;
std::ifstream-inf(“data.txt”);
while(inf)
{
如果(inf>>n)
{
std::看不懂这个:读这个:一个小问题:你从哪里学会使用eof()
?@LogicStuff我从pascal编程语言知道eof(),我们在学校学习pascal。而(inf.peek()!=eof)也应该可以:)
int main()
{
int n;
std::ifstream inf("data.txt");
while ( inf )
{
if ( inf >> n )
{
std::cout << n << std::endl;
}
}
}