Поэтому у меня есть это
int main(){
string input;
string lastName;
string firstName;
int age;
int streetNum;
string streetName;
string town;
string zipCode;
float balance;
Update(lastName, firstName, age, streetNum, streetName, town, zipCode, balance);
}
и вот функция Update
void Update(string &lastname, string &firstname, int &age, int &streetnum, string &streetname, string &town, string &zipcode, float &balance){
cout << "Update the following, enter nothing to leave the same: " << endl;
string input;
cout << "Last name: ";
getline(cin, input);
if (input != "\n") { lastname = input; }
cout << "First name: ";
getline(cin, input);
if (input != "\n") { firstname = input; }
cout << "Age: ";
getline(cin, input);
if (input != "\n") { age = atoi(input.c_str()); }
cout << "Street number: ";
getline(cin, input);
if (input != "\n") { streetnum = atoi(input.c_str()); }
cout << "Street name: ";
getline(cin, input);
if (input != "\n") { streetname = input; }
cout << "Town name:";
getline(cin, input);
if (input != "\n") { town = input; }
cout << "ZipCode: ";
getline(cin, input);
if (input != "\n") { zipcode = input; }
cout << "Balance: ";
getline(cin, input);
if (input != "\n") { balance = atof(input.c_str()); }
}
Моя цель - обновить значение или перейти к следующему значению, если вход "\n".
После запуска, и программа вызывает Update, она печатает "Last Name: First Name:" в той же строке, не позволяя пользователю вводить что-либо в lastname. Я понятия не имею, почему он это делает. Любые советы или подсказки по направлениям будут полезны.
getline() не ждет ввода пользователя. Я верю, что если вам не сказали использовать getline(), вы можете использовать cin. Что будет выглядеть так:
cout<< "Lastname: ";
cin>>input;
if(input != " ")
{
lastname= input;
}
Единственная проблема, которую я предвижу, заключается в том, что вы не сможете использовать "\n" в качестве условия для своих операторов if. В приведенном выше примере я использовал пробел как символ пропуска.
cin
. Он просто передает cin
на getline
. Его код работает на меня.
getline()
действительно ожидает ввода пользователя. Он не может get
ничего, пока пользователь не введет его, и он будет блокироваться и ждать, если пользователь ничего не набрал.
\n
"застрял" в cin, который вы не обрабатывали где-то еще в вашем коде?cin >>
где-нибудь? Похоже, завершающий выпуск новой строки