2012-01-18 12 views
0

私は変数ストアを作成しようとしていますが、その文字列はファイルに書き込まれますが、文字列はgetl​​ineによって読み込まれず、ファイルに書き込もうとすると何も書き込まれません。コメントからgetlineは変数から文字列を読み込みません。 (C++)

#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; 
    } 
} 
+0

この関数を呼び出す場所はどのようなコードですか?このようなことは起こりません: 'cin >> something;'それですか? –

+1

これの前に 'cin'から何かを読んだことがありますか?バッファに前の入力行の終わりがあるかもしれません。特に、何かを読むために '>>'を使ったのであれば。 –

+0

あなたのサンプルコードは私にはうまく見えます。たぶん、出力ファイルを単に安全にするためにフラッシュするでしょうか?このように: 'myfile << newquestion << flush; –

答えて

2

あなたが入力の前の行からの読み取りにcin >> variableを使用しているように、それが鳴ります。これにより、前の行の終わりが入力ストリームのバッファに残ります。したがって、次のgetline()の呼び出しで空の文字列が返されます。

あなたは

cin.ignore(numeric_limits<streamsize>::max(), '\n') 
1

前の入力から最後の改行はおそらくありと行の残りの部分をクリアすることができます。試してみてください:

while (newquestion.empty()) 
{ 
    getline(cin, newquestion); 
    boost::trim(newquestion); 
} 
関連する問題