Wednesday 15 September 2010

c++ - String getline(cin,variable) function is skipping some lines of code -



c++ - String getline(cin,variable) function is skipping some lines of code -

my programme skips code when utilize getline(cin,variablehere) function. don't know whats wrong code. see output below

#include <iostream> #include <string> using namespace std; int main() { string getfirstname; string lastname; string address; int contactnumber; cout << "enter first name : "; getline(cin, getfirstname); cin.ignore(); cout << "enter lastly name : "; getline(cin, lastname); cin.ignore(); cout << "enter address : "; getline(cin, address); cin.ignore(); cout << "enter contact number : "; cin >> contactnumber; cin.ignore(); currentnumberofcontacts += 1; cout << "successfully added contact list!" << endl << endl; cout << "would add together contact ? [y/n] "; cin >> response; //more lines of codes below homecoming 0; }

i have inputed 'int' info type because contain numbers only

i recommend removing all cin.ignore() commands.

one of problems user input >> operator not take homecoming character out of stream if follow getline() getline() read homecoming character instead of want type in.

so alter all getline() this:

// cin >> ws skip homecoming characters // may left in stream getline(cin >> ws, lastname);

also remove all of cin.ignore() commands. not doing useful when used after getline() command , if alter getline() commands showed should not necessary @ all.

so should work:

int main() { string getfirstname; string lastname; string address; char response; int contactnumber; int currentnumberofcontacts = 0; cout << "enter first name : "; getline(cin >> ws, getfirstname); cout << "enter lastly name : "; getline(cin >> ws, lastname); cout << "enter address : "; getline(cin >> ws, address); cout << "enter contact number : "; cin >> contactnumber; currentnumberofcontacts += 1; cout << "successfully added contact list!" << endl << endl; cout << "would add together contact ? [y/n] "; cin >> response; //more lines of codes below homecoming 0; }

strictly speaking not of getline() functions need employ cin >> ws trick. suppose (incomplete) rules follows:

if utilize std::getline() after >> use:

std::getline(cin >> ws, line);

otherwise use:

std::getline(cin, line);

c++

No comments:

Post a Comment