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;


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值