ifstream.open () устанавливает failbit в eclipse cdt? - PullRequest
1 голос
/ 11 апреля 2020

Я изучаю файловый ввод-вывод C ++ и испытываю трудности с открытием файла для чтения. Я пробовал простую изолированную программу ввода файлов в Eclipse CDT (Ubuntu 18.04) и Visual Stud ios (Windows 10). В Visual Stud ios он читает файл без проблем, но в Eclipse он устанавливает флаг сбоя при открытии файла. Я попытался .clear () установить флаг сбоя, чтобы увидеть, сможет ли он по-прежнему читать файл, но он читает его так, как будто он пустой.

Моя программа выглядит следующим образом:

#include <iostream>
#include <string>
#include <fstream>
using namespace std;

int main() {
    ifstream f;
    f.open("test.txt");
    if (!f.is_open()) {
        cout << "file could not be opened" << endl;
        cout << "failbit? " << (f.fail() ? "yes" : "no") << endl;
        return -1;
    }
    cout << "file opened successfully" << endl;
    string line;
    int i = 0;
    while (f.peek() != EOF) {
        getline(f, line);
        cout << "line " << i << ": " << line << endl;
        i++;
    }
}

Это работает на VS, но мне нужно, чтобы оно работало и на Eclipse. Открыта для любых предложений, спасибо.

1 Ответ

1 голос
/ 11 апреля 2020

Большинство версий Eclipse запускают программу из другой папки, из которой расположен проект, если у вас есть файл в каталоге проекта, попробуйте переместить / скопировать его в каталог отладки, где расположен исполняемый файл.

...