gpt4 book ai didi

c++ - cin 和 getline 跳过输入

转载 作者:太空宇宙 更新时间:2023-11-04 13:18:31 25 4
gpt4 key购买 nike

<分区>

早些时候我发布了一个关于 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;
}

但我仍然得到同样的结果,跳过输入,当它接受输入时,它接受它们并存储在名称中空的任何东西,并且在地址中它接受我在名称中写的但是从第二个字母到结束

我的代码有什么问题?

我同时尝试了 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;
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com