阅读文件在我的计划,我从使用下面的代码的命令行参数两个文件名:错误在Linux中
ifstream routesFile (arv[1]);
ifstream citiesFile (arv[2]);
然后我继续完成文件的读取和获取数据。这两个文件的CSV:
while(citiesFile.good()){
string city;
string country;
string xString;
string yString;
getline(citiesFile, country, ',');
getline(citiesFile, city, ',');
getline(citiesFile, xString, ',');
getline(citiesFile, yString);
...
}
当我使用硬编码的文件名,这样做在Visual Studio中,它工作正常。当我在使用g ++之后在linux中使用命令行参数时,它可以正确地打开这些文件,但之后它有很多错误。为了测试文件读出,我打印出一些这导致
terminate called after throwing an instance of 'std::out_of_range'
what(): map::at
hereELF
Òœc½Å¹jn!ýô (EÕL˜C
的here
外观是由于实际被打印在程序中读出的值的。它不会从错误中产生,我手动打印它来测试代码。
它似乎无法正确读取数据。在citiesFile的文件中,每行总是有4个值,每个值由一个命令分隔,没有空格,并且新行字符将文件中的行分隔开。正如我上面所说的,它在Visual Studio中工作正常,所以我不认为这是实际数据的问题,只是阅读它。
何时发生错误? – 2013-04-20 02:51:42
如果我尝试阅读信息,它会将其误解为显示的内容。然后当我访问使用它的各种数据结构时,它会抛出异常。如果我对文件名进行硬编码,则不会发生该错误。 – 2013-04-20 02:52:57