C++存储cin输入并跳过其他输入

C++ storing cin input and skipping others

本文关键字:输入 其他 cin 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;
  size_t sz;
  cout << "Last name: ";
  cin >> input;
  if (!input.empty()) { lastname = input; }
  cout << "First name: ";
  cin >> input;
  if (!input.empty()) { firstname = input; }
  cout << "Age: ";
  cin >> input;
  if (!input.empty()) { age = stoi(input, &sz); }
  cout << "Street number: ";
  cin >> input;
  if (!input.empty()) { streetnum = stoi(input, &sz); }
  cout << "Street name: ";
  cin >> input;
  if (!input.empty()) { streetname = stoi(input); }
  cout << "Town name:";
  cin >> input;
  if (!input.empty()) { town = input; }
  cout << "ZipCode: ";
  cin >> input;
  if (!input.empty()) { zipcode = input; }
  cout << "Balance: ";
  cin >> input;
  if (!input.empty()) { balance = stof(input); }
}

如果用户只点击回车键,我的所有尝试都无法跳过输入。

代码的cin的问题是:

  • 它忽略空格,换行符(enter)是一个空格
  • 它使用空格作为值的分隔符,因此"Baker street"将被读取为两个字符串,第二个字符串用于城镇

考虑在字符串中使用getline()(并最终使用字符串流来进一步解析接收到的结果):

   getline (cin, input);    // instead of cin>>input;

顺便说一句,街道名不是整数,是吗?;-)

相关文章: