2014-09-13 64 views
0

所以我有这个C++值更新/忽略

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,它会在同一行上输出“Last Name:First Name:”而不让用户输入任何内容到姓氏中。我不知道为什么这样做。任何提示或线索方向进入将是有益的。

+0

我似乎无法用您提供的代码重现您的问题。也许有一个'\ n'“卡在”cin中,你没有在你的代码中的其他地方处理? – godel9 2014-09-13 04:54:38

+1

你是否在某处使用'cin >>?看起来像尾随换行问题 – P0W 2014-09-13 04:55:53

+0

是的,我有另一个功能类似于更新()。唯一的区别是它更新可以跳过输入。什么是后续换行问题? – user3348713 2014-09-13 05:19:40

回答

0

getline()不等待用户输入。我相信,除非你被告知要使用getline(),否则你可能需要使用cin。这看上去就像这样:

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

我预见的唯一的问题是,你将无法使用“\ n”作为你的病情为你的if语句。在上面的例子中,我使用了一个空格作为我的跳过字符。

+1

我认为他正在使用'cin'。他只是将'cin'传递给'getline'。他的代码为我工作。 – godel9 2014-09-13 04:55:22

+1

'getline()'不会等待用户输入。直到用户输入它才能“获取”任何东西,如果用户没有输入任何东西,它将阻止并等待。 – Galik 2014-09-13 05:46:15