В созданной мной программе мне нужно получить некоторую информацию о клиенте в массиве. Ниже приведены коды, касающиеся моего вопроса.Как получить набор слов с пробелами как один вход в C?
struct CustomerType
{
string fName;
string lName;
char gender;
string address;
string contactNo;
};
CustomerType Customer[1000];
У меня есть следующий код для ввода данных пользователем. Здесь i
- это индекс клиента, о котором я получаю информацию.
string add="";
cout<<left<<"\n"<<setw(29)<<"\t\t Name"<<": ";
cin>>Customer[i].fName>>Customer[i].lName;
cout<<left<<"\n"<<setw(29)<<"\t\t Gender"<<": ";
cin>>Customer[i].gender;
cout<<left<<"\n"<<setw(29)<<"\t\t Address"<<": ";
getline(cin,add); Customer[i].address=add;
cout<<left<<"\n"<<setw(29)<<"\t\t Contact No."<<": ";
cin>>Customer[i].contactNo;
Но когда я запускаю программу, она запрашивает только имя, пол и контакт. но не адрес. Он работает так, как будто нет команды getline
.
Как исправить это?
http://stackoverflow.com/search?q=+%5Bc%2B%2B%5D+getline+skipping – chris
Ваш код будет проще прочитайте, если вы использовали пробелы, окружающие операторов. BTW, время, сохраненное во время компиляции не используемых пробелов, очень незначительно. –
Я рекомендую вам добавить функциональность в структуру для чтения ее членов. Ваш код будет выглядеть как 'cin >> Customer [i];'. –