我正在尝试在程序中打开文件以从中导入一些信息。代码的相关部分是这一段:
Airport::Airport(string& apt) {
ifstream datasid;
ifstream datastar;
ICAO = apt;
if (ICAO == "LEPA"){ //fill map with points and their departure
datasid.open("LEPASID.txt");
datastar.open("LEPASTAR.txt");
}
else if (ICAO == "LEAL"){ //fill map with points and their departure
datasid.open("LEALSID.txt");
datastar.open("LEALSTAR.txt");
}
else {
cout << "El aeropuerto no se encuentra en la base de datos." << endl;
correct = false;
}
if (datasid.fail() or datastar.fail()) cout << "Se ha producido un error al leer los datos del aeropuerto" << endl;
运行程序时,出现错误:
没有任何错误的生产商品
表示datasid
或datastar
失败。
文件与源文件位于同一目录中,我检查了名称是否正确。
答案 0 :(得分:2)
我已经使用main()
在Visual Studio中运行了该程序,并且在解决了一些问题之后对我来说效果很好:
这是我的工作代码。这对我有用。检查与您的差异(我添加了std::couts
来检查哪个if
被激活)。如果仍然不起作用,则可能是您的变量ICAO
(不是LEAL或LEPA),您的Airport
类或您的.txt文件中没有问题正确的目录。
#include <string>
#include <fstream>
#include <iostream>
int main() {
std::string apt = "LEPA";
std::ifstream datasid;
std::ifstream datastar;
std::string ICAO = apt;
if (ICAO == "LEPA") {
datasid.open("LEPASID.txt");
datastar.open("LEPASTAR.txt");
std::cout << "LEPA OK";
}
else if (ICAO == "LEAL") {
datasid.open("LEALSID.txt");
datastar.open("LEALSTAR.txt");
std::cout << "LEAL OK";
}
else {
std::cout << "El aeropuerto no se encuentra en la base de datos." << std::endl;
bool correct = false;
}
if (datasid.fail() || datastar.fail())
std::cout << "Se ha producido un error al leer los datos del aeropuerto"
<< std::endl;
答案 1 :(得分:0)
我将所有文件(包括源文件,可执行文件等)移到了新目录。现在正在工作。我认为旧目录存在某种问题。