【发布时间】:2014-09-13 04:42:15
【问题描述】:
所以我有这个
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”,我的目标是更新值或跳到下一个值。
一旦运行并且程序调用更新,它会在同一行打印出“姓氏:名字:”,而不会让用户在姓氏中输入任何内容。我不知道为什么会这样。任何提示或进入方向的线索都会有所帮助。
【问题讨论】:
-
我似乎无法用您提供的代码重现您的问题。也许有一个
\n“卡在”cin 中,您没有在代码中的其他地方处理? -
您在某处使用过
cin >>吗?看起来像尾随换行问题 -
是的,我还有另一个类似于 Update() 的函数。唯一的区别是它 Update 可以跳过输入。什么是尾随换行问题?
-
要了解尾随换行问题,请查看*.com/questions/6642865/…。
-
if (input != "\n") { lastname = input; }输入将永远等于"\n",因为getline()删除了"\n"字符。您可以改用if(!input.empty()),但您可能想寻找一个函数来删除任何可能被错误输入的空格。
标签: c++ parameter-passing cin getline