C++ cin被跳過
阿新 • • 發佈:2019-01-01
問題:
今天寫程式碼發生了第二個cin被跳過的情況,原來是因為我的第一個cin,輸入的是檔案路徑,較長,自動換行了,也就產生了兩次換行(\n),所以第二個cin發現有換行就不等待輸入了,直接存了一個空的內容。
解決方法:cin.ignore()
basic_istream<Elem, Tr>& ignore(
streamsize _Count = 1,
int_type _Delim = traits_type::eof( )
);
把緩衝區內從當前字元開始到_Delim之前字元_Count個忽略掉。例如:
#include <iostream> int main( ) { using namespace std; char chararray[10]; cout << "Type 'abcdef': "; cin.ignore( 5, 'c' ); cin >> chararray; cout << chararray; return 0; }
輸入 :abcdef
輸出:def
輸入:abbbbbcdef
輸出:bcdef
5和c先到哪個就忽略之前的。
解決方法:
cin.ignore(1000, '\n')
清除之前緩衝區中'\n'的干擾。即可
具體程式碼:
string fileFolderPath; cin >> fileFolderPath;//之前路徑太長產生兩個'/n' cin.ignore(1000, '\n');//消除影響 cout << "輸入檔案字尾名:如jpg" << endl; string fileExtension; cin >> fileExtension;