程式先用 cin.getline(charr, 20) 讀一行,再用 getline(cin, str) 讀下一行,結果需按兩次 Enter。原因:cin.getline 讀取並**丟棄**分隔符 (換行),但若輸入超過 19 字元,**多餘字元殘留在緩衝區**,導致後續 getline 立即讀到空行。
cin.getline(charr, 20);
cin.ignore(numeric_limits::max(), '\n'); // 清空殘留
getline(cin, str);
std::string + getline(cin, str),避免 C 風格緩衝區殘留問題。cin.ignore() 清理。ignore 可跨平台穩定。養成「切換輸入方式前清理緩衝區」習慣,杜絕多按 Enter 問題。