gpt4 book ai didi

c++ - 使用 ifstream 无法打开文本文件

转载 作者:行者123 更新时间:2023-11-28 01:32:13 50 4
gpt4 key购买 nike

我正在尝试在我的程序中打开一个文件以从中导入一些信息。代码的相关部分是这个:

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;

当我运行程序时,出现错误:

Se ha producido un error al leer los datos del aeropuerto

表示 datasiddatastar 失败。

这些文件与源文件在同一个目录中,我检查了名称是否正确。

最佳答案

我已经在 Visual Studio 中使用 main() 运行了该程序,在解决了一些问题后它对我来说运行良好:

  • 添加 header :string、fstream、iostream。
  • 使 ICAO 成为 std::string。
  • 向函数添加返回类型并在末尾放置“返回任何内容”。
  • 我用了 || 而不是“或”。
  • 制作“正确”的 bool 类型。
  • 添加所有“std::”。

这是我的工作代码。这对我有用。检查与你的差异(我添加了 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;

关于c++ - 使用 ifstream 无法打开文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51030456/

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