私は多くのオブジェクトを保持する配列であるデータベースクラスを持っています。私は、コードを実行すると、私は最後の名前を入力した後エンターキーを押した後、それはちょうど、文字列とintのユーザー入力を取得するにはどうすればよいですか?
std::cout << "Enter first name: ";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::getline(std::cin, first_name);
std::cout << "Enter last name: ";
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
std::getline(std::cin, last_name);
std::cout << "Enter age: ";
std::cin >> age;
: 機能は、例えば、両方の文字列とint型
が含まれ、ユーザからの入力のカップルがかかります新しい行を開始し、年齢入力を求める前に別の入力を入力する必要があります。
getlineとcinを混ぜるのが悪いと聞きました。どちらか一方を使用する方が良いと聞きました。この仕事をするために私は何ができますか?また、何が良い練習になるでしょうか?
編集:ソリューションを最初に検索したときに無視して追加しましたが、コードがなければユーザー入力を待たずに済みます。出力は「姓を入力:姓を入力:」
Edit2:解決済みです。問題は、ユーザーがint変数を入力するために私のコードで "cin >>"を使用していて、最初のcin.ignoreステートメントが必要でしたが、もう一方は必要ではありませんでした。私はそれがそれに影響しているのか分からなかったので、コードのその部分を含めなかった。まだこのすべてに新しいので、誰も彼らの助けをありがとう!私はignore
機能を削除することをお勧めします
'std :: getline()'がすでに次の行に移動しているので、 'ignore'行を削除してください。 – Galik
あなたが何をしているのか分からないのは悪いことです。 「無視する」とは何ですか? – LogicStuff
好奇心から、なぜあなたは 'getline'の前に入力を無視していますか?プログラムがデータを入力する前に、ユーザーが強制的に空白行を入力するように見えます。 –