2007/10/23

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個charskip到遇到'\n'為止。因此,在使用getline()的時候,
就可以得到乾淨的stream

Ref: http://mathbits.com/mathbits/compsci/APstrings/APgetline.htm

沒有留言:

2024年React state management趨勢

輕量化 在過去Redux 是 React 狀態管理的首選函式庫。 Redux 提供了強大的功能和靈活性,但也帶來了一定的學習成本和複雜度。 隨著 React 生態的不斷發展,越來越多的開發者開始追求輕量化的狀態管理函式庫。 Zustand 和 Recoil 等庫以其簡單易用、性...