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