c++におけるcinの動作手順
1546 ワード
c++を初めて勉強して、cinの仕事の流れが何なのかずっと知らなかったので、今日研究してみました.ちょっとした収穫があります.
このコードを例にとると
テキストの読み込み段階では、I am a studentを入力します.車に戻ったらCtrl+zを入力してから車に戻ります.初めてEnterを押した後、文全体を入力バッファに入れます(含まない
Ctrl+z)を押しながら、1番目のEnterを押すことでcinは入力バッファの文字の検出を開始し、1番目のスペースの前の「I」をstrに取り出してループを実行し、終了後に2番目のスペースの前の「am」を取り出し、文の処理が終了するまで同様の処理を行う.入力バッファにデータがありません.このとき2番目のEnterに遭遇し、バッファが空であることを検出し、
Ctrl+z(バッファにいない)はループを飛び出し、次の文を実行します.
注意すべき点はいくつかあります.
1.スペース、tabとEnterは文字間の区切り文字として使用できます
2.Enterのみがバッファをリフレッシュでき、入力した文字をバッファに入れて処理を開始する.Enterを押す前に、入力した文字は処理されず、文字列を入力するたびに処理されたり、区切り文字にぶつかったりするのではありません.
3.ctrl+zは文字を生成せず、バッファにも入らず、while(cin>>str)という形式でループを終了するのが一般的です.
4.ctrl+zはバッファが空の場合にのみ機能します.これは、Enterを2回押す理由です.1回目のEnterはバッファ内のデータをすべて処理して空にし、2回目のEnterはcinをトリガしてctrl+zを検出し、このときバッファが空になったのでループから飛び出します
このコードを例にとると
#include
#include
#include
using namespace std;
/* :
。
, , 。
:
。 。
“I am a student.”, “student. a am I”。*/
int main()
{
vector v;
string str;
// vector
cout << "Enter sentence(Ctrl + Z to end):" << endl;
while(cin >> str)
{
v.push_back(str);
}
// ,
if(v.size() == 0)
{
cout << "No element!" << endl;
return -1;
}
//
for(vector::size_type ix = v.size() - 1; ix >= 0; --ix)
{
cout << v[ix] << " ";
}
cout << endl;
return 0;
}
テキストの読み込み段階では、I am a studentを入力します.車に戻ったらCtrl+zを入力してから車に戻ります.初めてEnterを押した後、文全体を入力バッファに入れます(含まない
Ctrl+z)を押しながら、1番目のEnterを押すことでcinは入力バッファの文字の検出を開始し、1番目のスペースの前の「I」をstrに取り出してループを実行し、終了後に2番目のスペースの前の「am」を取り出し、文の処理が終了するまで同様の処理を行う.入力バッファにデータがありません.このとき2番目のEnterに遭遇し、バッファが空であることを検出し、
Ctrl+z(バッファにいない)はループを飛び出し、次の文を実行します.
注意すべき点はいくつかあります.
1.スペース、tabとEnterは文字間の区切り文字として使用できます
2.Enterのみがバッファをリフレッシュでき、入力した文字をバッファに入れて処理を開始する.Enterを押す前に、入力した文字は処理されず、文字列を入力するたびに処理されたり、区切り文字にぶつかったりするのではありません.
3.ctrl+zは文字を生成せず、バッファにも入らず、while(cin>>str)という形式でループを終了するのが一般的です.
4.ctrl+zはバッファが空の場合にのみ機能します.これは、Enterを2回押す理由です.1回目のEnterはバッファ内のデータをすべて処理して空にし、2回目のEnterはcinをトリガしてctrl+zを検出し、このときバッファが空になったのでループから飛び出します