C++值更新/忽略

C++ value updating/ignoring

本文关键字:忽略 更新 C++      更新时间:2023-10-16

所以我有这个

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);
}

这是更新的功能

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,它就会在同一行打印出"lastname:FirstName:",而不让用户在lastname中输入任何内容。我不知道它为什么这么做。任何关于进入方向的提示或线索都会有所帮助。

getline()不等待用户输入。我相信,除非你被告知使用getline(),否则你可能想要使用cin。看起来是这样的:

cout<< "Lastname: ";
cin>>input;
if(input != " ")
{
    lastname= input;
}

我预见到的唯一问题是,您将无法使用'\n'作为if语句的条件。在上面的例子中,我使用了一个空格作为我的跳过字符。