このコードを考えると:
#include <cstdio>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::string;
int main() {
int a;
string b;
cin >> a;
cin >> b;
return 0;
}
g++でコンパイルして実行してみました。に char を代入するときa
、最初cin
に 、次の命令がスキップされるようです。
getchar()
最後の 2 行の間に2 つの命令を追加しても、2つ目だけgetchar()
が実行されるようです。誰かが低レベルで何が起こっているのかを正確に説明できますか?
編集:
このデバッグ コードの使用:
#include <cstdio>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main() {
int a;
string b;
cin >> a;
cin >> b;
cout << "a is "<< a << endl;
cout << "b is "<< b << endl;
getchar();
return 0;
}
INPUT 1テスト
OUTPUT a は 1 b は test * getchar は実行されません *
入力 1 テスト
OUTPUT a は 1 b はテスト
INPUT テスト
OUTPUT a は 0 b は
入力 t
// 秒をスキップcin
OUTPUT a は 0 b は
注:
getchar()
一度も実行されていません。