问题:
今天写代码发生了第二个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;