stringとCスタイル文字列入力方式の詳細

897 ワード

Cスタイル文字列の場合
例えば、char info[100];
3つの方法があります.
/*
1.cin>>info;
2.cin.getline(info,100);
3.cin.get(info,100);
*/

stringオブジェクトには、string strなどの2つの方法があります.
/*
1.cin>>str;
2.getline(cin,str);
*/

両方のバージョンのgetline()には、入力された境界を決定するためにどの文字を使用するかを指定するオプションパラメータがあります.
/*
cin.getline(info,100,':');
getline(cin,str,':');
*/

以下、getline()とget()について詳しく説明します.
getline()関数は、行を読み込むたびに改行で行末を決定しますが、改行は保存されず、改行を空の文字0で置き換えます.
get()関数も改行で行末を決定しますが、改行は入力キューに保持されます.get()を2回連続で呼び出すとします.
cin.get(name1,20);
cin.get(name2,20);
1回目の呼び出し後、改行文字がキューに残るため、2回目の呼び出し時に表示される最初の文字は改行文字ですが、2回目のget()
行の最後に到達したと考えられ、読み取り可能なコンテンツは見つかりませんでした.ヘルプを使用しないと、get()は改行文字を越えられません.解決する方法があります
cin.get(name1,20);
cin.get();//改行を食べる
cin.get(name2,20);