gpt4 book ai didi

C++文件I/O问题

转载 作者:太空宇宙 更新时间:2023-11-04 15:10:29 25 4
gpt4 key购买 nike

我试图打开一个通常有内容的文件,出于测试的目的,我想在文件不可用/不存在的情况下初始化程序,这样程序应该创建空文件,但在实现它时遇到问题。这是我原来的代码

void loadFiles() {
fstream city;
city.open("city.txt", ios::in);
fstream latitude;
latitude.open("lat.txt", ios::in);
fstream longitude;
longitude.open("lon.txt", ios::in);
while(!city.eof()){
city >> cityName;
latitude >> lat;
longitude >> lon;
t.add(cityName, lat, lon);
}
city.close();
latitude.close();
longitude.close();
}

我已经尝试了所有我能想到的方法,ofstream、ifstream,添加了 ios::out 的所有变体。谁能解释我该怎么做才能解决这个问题。谢谢!

最佳答案

您已经发布了读取文件的代码,而不是创建空文件的代码 - 您不需要在这方面扩展您的问题。而且您发布的内容不是阅读的好代码。 eof() 函数在读取之后检测文件结尾,而不是读取之前 - 基本上,您几乎不应该使用它。相反,您应该测试每次读取是否成功:

while( (city >> cityName) && (latitude >> lat) && (longitude >> lon) {
t.add(cityName, lat, lon);
}

另外,如果你想创建一个输入流,为什么不使用 ifstream 对象明确地这样做:

ifstream city( "city.txt" );

无需摆弄 ios 标志。您真的应该测试打开是否也有效:

if ( ! city.is_open() ) {
throw "open failed" ; // or whatever
}

关于C++文件I/O问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com