ユーザーから文字列と文字の入力を取得する単純なコンソール アプリケーションを C++ で作成しています。簡単にするために、 stringおよびcharデータ型を使用して cin からの入力を渡したいと思います。
文字列入力を取得するために、getlineメソッドを使用しています。
string var;
cin.ignore(); //I used ignore() because it prevents skipping a line after using cin >> var
getline(cin, var);
char 入力を取得するために、cin >> varメソッドを使用しています。
char var;
cin >> var;
これはほとんどの場合うまくいきます。ただし、getlineを使用して文字列を入力すると、文字列の最初の文字が無視されます。
ignoreを使用せずにgetlineとcin >>を使用することは可能ですか、または最初の文字がスキップされないようにするために呼び出すことができるメソッドはありますか?
これは、 getlineとcin >>の両方を使用するコードの完全なサンプルです。
string firstName;
string lastName;
char gender = 'A';
cout << "First Name: ";
cin.ignore();
getline(cin, firstName);
cout << "Last Name: ";
cin.ignore();
getline(cin, lastName);
while(genderChar != 'M' && genderChar != 'F')
{
cout << "Gender (M/F): ";
cin >> genderChar;
genderChar = toupper(genderChar);
}