ユーザーが何も入力せずに Enter キーだけを押してプログラムを続行できるようにする方法はありますstd::cin
か? ありがとう!
_tprintf(_T("\nENTER CHOICE: "));
cin>>ch;
cin.ignore();
このコード セグメントを使用してプログラムを実行すると、実際にはそのフィールドに何も入力したくない場合があり、Enter キーを押すとカーソルが新しい行を生成するだけです。
"read in"std::noskipws
の場合、読み取りは空白のスキップを停止します。これは、1 文字で読み取るときに、スペースや改行などを読み取ることができることを意味します。
#include <iostream>
#include <iomanip>
int main() {
std::cin >> std::noskipws; //here's the magic
char input;
while(std::cin >> input) {
std::cout << ">" << input << '\n';
}
}
入力で実行すると:
a
b
c
生成:
>a
>
>
>b
>
>
>c
a
したがって、文字、改行の後のエンターキー、空行、文字b
などで読み取られることがわかります。
ユーザーが数値を入力した後にエンター キーを押すようにしたい場合は、コードでそれを処理する必要があります。
ユーザーが 1 行に 1 つの「もの」を入力するだけの場合は、実際にはもっと簡単な方法があります。
#include <iostream>
int main() {
std::string line;
while(std::getline(std::cin, line)) {
std::cout << line << '\n';
}
}
これにより、入力から行末までの文字が読み取られ、スペースのある行または何もない行を読み取ることができます。使用した後はstd::cin >>
通常、入力に改行キーが残るため、std::getline
直後に実行すると空の文字列が返されることに注意してください。これを回避するには、 を使用std::cin.ignore(1, '\n')
する前に改行を無視するように を使用できますstd::getline
。
あなたの質問を正しく理解していれば、入力が等しいかどうかを簡単に確認できます""
。そうでない場合は、要求されたアクションを続行しないでください。
編集:ああ、あなたが質問を編集したので、あなたが何を望んでいるのかわかりました。を使用するだけcin.ignore();
です。cin >>
その前に何もする必要はありません。
いいえ、そのために使用することはできませんcin
。
プログラムが入力を待っているときにENTERキーを押すと、cin
は改行を完全に無視し ( skipws
. 関連するタイプの有効な入力を受け取るか、EOF に遭遇しない限り、入力を求め続けます。
getline
代わりに関数を使用してください。
#include <string>
...
cout << "Enter Something\n";
string a;
getline(cin, a);