cin << 名前 << endl; cout >> "私の名前は" << name << endl;
1 に答える
0
問題
あなたが言うときcin >> smth
、あなたは正確にsmthを得たいと思っています。エンドライン マーカーはその一部ではないため、消費されません。line に特別なタイプがある場合を除きますが、標準ライブラリにはそのようなものはありません。
使用するときはgetline
、ラインを取得したいと言います。行は で終わる文字列で\n
あり、末尾はその不可欠な部分です。
したがって、問題は、バッファstd::cin
に行末文字が残ることです。\n
例
std::cin >> smth;
+---+---+---+---+---+----+
|'H'|'e'|'l'|'l'|'o'|'\n'| // In smth will be "Hello"
+---+---+---+---+---+----+
+----+
|'\n'| // But new-line character stays in buffer
+----+
std::cin >> smth2; // Its same like you would press just an 'enter', so smth2 is empty
解決
- 使用する
std::cin.getline
また
std::cin >> smth;
+を使用std::cin.ignore();
于 2017-08-15T20:55:52.340 に答える