Текстовый файл не открывается с помощью ifstream - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь открыть файл в моей программе, чтобы импортировать из него некоторую информацию.Вот соответствующая часть кода:

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;

Когда я запускаю программу, я получаю ошибку:

* 1006.

Это означает, что datasid или datastar не удалось.

Файлы находятся в том же каталоге, что и исходные файлы, и я проверил правильность имен.

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Я переместил все файлы, включая исходные коды, исполняемые файлы и т. Д., В новый каталог.Теперь это работает.Я предполагаю, что была какая-то проблема со старым каталогом.

0 голосов
/ 25 июня 2018

Я запустил эту программу в Visual Studio, используя main(), и она исправна для меня после исправления нескольких проблем:

  • Добавление заголовков: string, fstream, iostream.
  • Создание ИКАО std :: string.
  • Добавление типа возвращаемого значения в функцию и добавление в конце слова "return what".
  • Вместо "или" Я использовал ||.
  • Создание "правильного" типа 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...