-1

cin << 名前 << endl; cout >> "私の名前は" << name << endl;

4

1 に答える 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 に答える