getline()先頭改行を無視
769 ワード
cinを使用します.clear()またはcin.ignore()最初の終端をスキップ
たとえば
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
たとえば
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