cin,cin.getline为何不能共同使用. C/C++ / C语言 - CSDN社区 community.csdn.net
解决的办法很简单:在
cin >> n;
后添加如下一行代码即可:
cin >> ws;
Tuesday, February 17, 2009
藏經閣: cin >> 與 getline(cin, s)合用的問題
藏經閣: cin >> 與 getline(cin, s)合用的問題
cin >> s0;
getline(cin, s1);
cout << "s0 = " << s0 << endl;
cout << "s1 = " << s1 << endl;
問題:
程式結果只出現s0字串,s1為空字串。
原因:
cin >>會把'\n'留在buffer裡,如果getline()接著執行,就會馬上讀到'\n',
因此getline()就停止在此,不會再往下讀取資料。
解決方法:
在使用如果getline之前,請先使用cin.ignore(100,'\n'),這行指令可以讓你
把skip過100個char或skip到遇到'\n'為止。因此,在使用getline()的時候,
就可以得到乾淨的stream。
cin >> 與 getline(cin, s)合用的問題
string s0,s1;cin >> s0;
getline(cin, s1);
cout << "s0 = " << s0 << endl;
cout << "s1 = " << s1 << endl;
問題:
程式結果只出現s0字串,s1為空字串。
原因:
cin >>會把'\n'留在buffer裡,如果getline()接著執行,就會馬上讀到'\n',
因此getline()就停止在此,不會再往下讀取資料。
解決方法:
在使用如果getline之前,請先使用cin.ignore(100,'\n'),這行指令可以讓你
把skip過100個char或skip到遇到'\n'為止。因此,在使用getline()的時候,
就可以得到乾淨的stream。
Subscribe to:
Posts (Atom)