在我的程序中,我使用以下代码从命令行参数中获取两个文件名:
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
是由于实际上是在程序中打印出来的。它不是由错误引起的,我手动打印它来测试代码。
似乎无法正确读取数据。在城市文件的文件中,每行总是有 4 个值,每个值由单个命令分隔,没有空格,并且文件中的行分隔符是换行符。正如我上面所说,它在 Visual Studio 中运行良好,所以我认为实际数据没有问题,只是阅读它。