Почему getline (из файла) для cout (этой строки) не печатает строку? - PullRequest
0 голосов
/ 27 сентября 2018

Здесь мой код.

ifstream inFile;
ofstream outFile;

string line, line2;

inFile.open("DATA.txt");
outFile.open("DATA.txt");

getline(inFile, line);
cout << line;
getline(inFile, line2);
cout << line2;

getline(cin, line);
getline(cin, line2);

outFile << line << "\n" << line2;

Насколько я понимаю, getline (inFile, line) должен назначить первую строку моего текстового файла строке с именем line.Затем строка cout << должна распечатать эту строку в окне cmd.Это не работает, хотя. </p>

Я могу нормально вводить, используя getline (cin, line) и outFile.Файл обновляется, и я вижу, что набрал в нем, но он просто не правильно читает и печатает строки.

ps Это мой первый вопрос, и я не совсем уверен, как его задать.в названии, поэтому я открыт для критики.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Так что я понял это.Когда у меня было

inFile.open("DATA.txt");
outFile.open("DATA.txt");

, я думаю, что outFile.open переписал inFile.open, заставив работать только выходную часть.Простое перемещение outFile.open до выходной части, а не до того, как все решит эту проблему.Я уверен, что в моем коде есть несколько других неряшливых вещей, но это исправило его до такой степени, что он действительно работал.

0 голосов
/ 27 сентября 2018

На большинстве платформ std::cout обычно буферизует выходные данные и не сбрасывается в консоль до тех пор, пока не будет выведен разрыв строки или не будет явно очищен буфер.

Попробуйте использовать:

cout << line << '\n';

Или:

cout << line << endl;

Если вы не хотите выводить разрывы строк, используйте:

cout << line << flush;
...