天天看點

C++ cin被跳過

問題:

今天寫代碼發生了第二個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;
           

繼續閱讀