在使用cin.getline
時可能會遇到截斷問題,即輸入的字符超過了指定的最大長度,導致部分字符被丟棄。為了解決這個問題,可以考慮以下幾種方法:
cin.ignore()
清除輸入緩沖區中多余的字符,確保下一次輸入不受影響。cin.getline(buffer, MAX_LENGTH);
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.get()
讀取字符直到遇到換行符或達到最大長度。cin.getline(buffer, MAX_LENGTH);
while(cin.peek() != '\n')
{
cin.get();
}
std::string
代替字符數組作為輸入緩沖區。std::string input;
getline(cin, input);
std::vector<char>
作為動態輸入緩沖區。std::vector<char> buffer(MAX_LENGTH);
cin.getline(&buffer[0], buffer.size());
通過以上方法,可以避免cin.getline
截斷問題,并確保完整地讀取用戶輸入的數據。