cin >> name; // 輸入 "x y"
cout << "Hello," << name; // 輸出 "Hello,x"
cin >> name; // 直接讀取緩衝區殘留的 "y",無需再輸入
operator>> 對 std::string 以**空白字符**(空格、換行、制表符)為分隔符。cin >> name 直接消費緩衝區中的 "y",導致看起來「捨棄了 x」。| 需求 | 方法 | 代碼示例 |
|---|---|---|
| 讀取整行(含空格) | std::getline | std::getline(cin, name); |
| 混用 >> 與 getline | 先清空緩衝區 | cin.ignore(numeric_limits |
| 逐詞讀取 | 保持 >> 行為 | 理解緩衡區機制,按需調用 |
#include
#include
#include
using namespace std;
int main() {
cout << "What's your name? ";
string name;
getline(cin, name); // 讀取整行 "x y"
cout << "Hello, " << name << endl;
cout << "And what's yours? ";
getline(cin, name); // 讀取下一行
cout << "Hello, " << name << ". Nice to meet you!" << endl;
return 0;
}
cin >> string 適合單詞輸入;需讀取含空格的完整行,**必須用 std::getline** 並注意清理前序 >> 留下的換行符。