1. 程式人生 > >C++ cin被跳過

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;