每當我嘗試運行此代碼:計劃被跳過函數getline()/ C++
string title;
int Choice;
cout<<"1. Insert new term ";
cin>>Choice;
if (Choice==1)
{
getline(cin,title);
}
程序只讀的選擇和結束的全過程:/,請幫助:d
每當我嘗試運行此代碼:計劃被跳過函數getline()/ C++
string title;
int Choice;
cout<<"1. Insert new term ";
cin>>Choice;
if (Choice==1)
{
getline(cin,title);
}
程序只讀的選擇和結束的全過程:/,請幫助:d
cin>>Choice;
葉輸入緩衝區中的尾隨換行符。然後getline(cin,title);
因此讀取一個空行。
通常,最好不要將格式化輸入與來自同一個流的getline
混合。
一個快速簡便的解決辦法是使用std::basic_istream::ignore
刪除從流的末尾換行符,就像這樣:
cin.ignore(2, '\n');
這種說法
cin>>Choice;
輸入緩衝區將包含新的生產線後,通過按Enter鍵留下字符。
所以遇到新行字符,直到與getline
if (Choice==1)
{
getline(cin,title);
下一條語句讀取一個空字符串。此語句前
插入下面的調用
#include <limits>
//...
{
getline(cin,title);
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
清除緩衝區。
非常感謝:D,它工作 –