cin
以前、入力をスキップすることについての質問を投稿し、フラッシュして使用する結果を得ましistringstream
たが、今はすべての可能な解決策を試しましたが、どれも機能しません。
これが私のコードです:
void createNewCustomer () {
string name, address;
cout << "Creating a new customer..." << endl;
cout << "Enter the customer's name: "; getline(cin, name);
cout << "Enter the customer's address: "; getline(cin, address);
Customer c(name, address, 0);
CustomerDB::addCustomer(c);
cout << endl;
}
しかし、私はまだ同じことを取得していて、入力をスキップします。入力を受け取ると、それらを受け取り、名前に空の何も格納しません。アドレスでは、名前で書いたものを受け取りますが、2番目の文字から最後までです。
私のコードの何が問題になっていますか?
私は、、、そしてそれらすべてを一緒にそして一人で試しましたcin.ignore()
、それらのどれもうまくいきませんでしたcin.get()
cin.clear()
編集:
main.cppのmainメソッドはmainMenu()
のみを呼び出します
void mainMenu () {
char choice;
do {
system("cls");
mainMenuDisplay();
cin >> choice;
system("cls");
switch (choice) {
case '1':
customerMenu();
break;
case '2':
dvdMenu();
break;
case '3':
receiptMenu();
break;
case '4':
outro();
break;
default:
cout << '\a';
}
cin.ignore();
cin.get();
} while (choice != '4');
}
顧客の例として1を選択します。これはcustomerMenu()
void customerMenu () {
char choice;
do {
system("cls");
manageCustomerMenu();
cin >> choice;
system("cls");
switch (choice) {
case '1':
createNewCustomer();
break;
case '2':
deleteCustomer();
break;
case '3':
updateCustomerStatus();
break;
case '4':
viewCustomersList();
break;
case '5':
mainMenu();
break;
default:
cout << '\a';
}
cin.ignore();
cin.get();
} while (choice != '5');
}
もう一度1を選択して、新しい顧客オブジェクトを作成します。これにより、MainFunctions.cppに移動しcreateNewCustomer()
、最初の関数を呼び出します。
void createNewCustomer () {
string name, address;
cout << "Creating a new customer..." << endl;
cout << "Enter the customer's name: "; cin.getline(name,256);
cout << "Enter the customer's address: "; cin.getline(address,256);
Customer c(name, address, 0);
CustomerDB::addCustomer(c);
cout << endl;
}