0

ユーザーが何も入力せずに Enter キーだけを押してプログラムを続行できるようにする方法はありますstd::cinか? ありがとう!

_tprintf(_T("\nENTER CHOICE: "));
cin>>ch;
cin.ignore();

このコード セグメントを使用してプログラムを実行すると、実際にはそのフィールドに何も入力したくない場合があり、Enter キーを押すとカーソルが新しい行を生成するだけです。

4

3 に答える 3

2

"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

于 2013-07-26T01:23:54.050 に答える
0

あなたの質問を正しく理解していれば、入力が等しいかどうかを簡単に確認できます""。そうでない場合は、要求されたアクションを続行しないでください。

編集:ああ、あなたが質問を編集したので、あなたが何を望んでいるのかわかりました。を使用するだけcin.ignore();です。cin >>その前に何もする必要はありません。

于 2013-07-26T00:29:55.677 に答える
0

いいえ、そのために使用することはできませんcin

プログラムが入力を待っているときにENTERキーを押すと、cinは改行を完全に無視し ( skipws. 関連するタイプの有効な入力を受け取るか、EOF に遭遇しない限り、入力を求め続けます。

getline代わりに関数を使用してください。

#include <string>
...
cout << "Enter Something\n";
string a;
getline(cin, a);
于 2013-07-28T12:31:59.920 に答える