2013-09-20 2 views
0

Я пытаюсь написать простую программу, которая будет печатать содержимое текстового файла по одной строке за раз. Однако, когда я запускаю программу, я просто получаю пустой экран. Я уверен, что файл, который я пытаюсь прочитать, содержит текст в нескольких строках. Любая помощь относительно того, почему это не работает, будет очень полезной.Невозможно напечатать текст из файла

bool show() { 
    string line; 
    ifstream myfile; 
    myfile.open("tasks.txt", ios::app); 
    while (!myfile.eof()) { 
     getline (myfile, line); 
     cout << line << endl; 
    } 
    myfile.close(); 
    return true; 
} 
+1

Поскольку вы хотите читать только файл, есть ли причина, по которой вы открываете его в режиме добавления? –

ответ

1

Проблема может быть, что вы используете ios::app с ifstream (входной поток), который не имеет никакого смысла.

Согласно this,

ИОС :: приложение: Все операции вывода выполняются в конце файла, добавление содержимого к текущему содержимому файла. This flag can only be used in streams open for output-only operations.

Попробуйте это:

std::string line; 
ifstream myfile ("tasks.txt"); 
if (myfile.is_open()) 
{ 
    while (getline (myfile,line)) 
    { 
     std::cout << line << std::endl; 
    } 
    myfile.close(); 
} 
+0

Спасибо! это была моя проблема. –

0

ли вы проверить возвращаемое значение myfile.isopen()? Возможно, файл отсутствует или у вас нет разрешения на чтение.

О да, я пропустил это - флаг добавления. Должно быть ios::in

Смежные вопросы