2014-09-13 63 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