getline не будет читать строку из переменной. (C ++) - PullRequest
0 голосов
/ 18 января 2012

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

#include <iostream>
#include <fstream>
#include <string> 

using namespace std;

void addquestiontofile(){
    ofstream myfile;
    // Open file to be written to.
    myfile.open("quesitons.txt",ios::ate | ios::app);

    string newquestion;
    cout << "insert new question:  \n";
    getline(cin, newquestion); // This is the problem line

    if(myfile.is_open())
    {
        myfile << newquestion;
    }
}

Ответы [ 2 ]

2 голосов
/ 18 января 2012

Судя по комментариям, вы использовали cin >> variable для чтения из предыдущей строки ввода.Это оставит конец предыдущей строки в буфере входного потока, поэтому следующий вызов getline() приведет к пустой строке.

Остальную часть строки можно очистить с помощью

cin.ignore(numeric_limits<streamsize>::max(), '\n')
1 голос
/ 18 января 2012

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

while (newquestion.empty())
{
    getline(cin, newquestion);
    boost::trim(newquestion);
}
...