getline()先頭改行を無視

769 ワード

cinを使用します.clear()またはcin.ignore()最初の終端をスキップ
たとえば
int main()
{
    string strline;
    cin>>strline;
    cout<<strline<<endl;

    cin.ignore(1);//      

    getline(cin,strline);
    cout<<strline<<endl;

    return 0;
} 

cinも使えます.clear();
またはcin.ignore(1024,'/n')は、改行に遭遇した後も無視されないか、1024文字を無視した後も無視されない.
stringタイプの入力オペレータとgetline関数がそれぞれ空白文字をどのように処理するかを説明します.
stringタイプの入力オペレータによる空白文字の処理:
有効な文字(空白以外の文字)の前のすべての空白文字を読み取り無視し、再び空白文字に遭遇するまで読み取りを終了します(入力ストリームに残っています).
getline関数の空白文字の処理:
行の先頭の空白文字を無視せず、改行に遭遇するまで文字を読み込み、改行を終了して破棄します(改行は入力ストリームから削除されますがstringオブジェクトには保存されません).
参照先:
1.http://blog.csdn.net/guankle/article/details/6250013
2.c++primer練習問題3.5