C++输入(更新中)

cin

读取一个单词,遇空白(空格、制表符、回车)停止读取

char a[10];
cin >> a;//输入abcd efg
cout << a;//输出abcd

getline()、get()

读取行输入,遇换行符停止读取
随后getline()丢弃换行符,get()将换行符保留在输入队列中

  • getline()
    调用:cin.getline(a,b) //其中a是存储输入行的数组名,b是读取的字符个数。
    如果b=20,则最多读取19个字符,余下空间用于存储自动在结尾添加的空字符
char a[10];
cin.getline(a,10);//输入abcd efg
cout << a;//输出abcd efg

getline()以换行符确定行尾,但不保存换行符,相反,用空字符代替换行符

  • get()
    调用:cin.get(a,b) //与getline()类似,其中a是存储输入行的数组名,b是读取的字符个数。
char a[10];
char b[10];
cin.get(a,10);//输入abcd efg
cin.get(b, 10);
cout << a << endl;//输出abcd efg
cout << b << endl;//输出空行

因为get()将换行符保留在输入队列中,输入第一行后,换行符在队列中,当成b的输入了,所以输入第一行回车后不会再有输入b的机会了,此时b存储了上一输入末尾的换行符。
要实现两行正常输入的话,我们需要在第一次输入后加一行cin.get(),读取第一行输入末尾的换行符,此时就可以正常输入第二行内容了,不会直接cout.

char a[10];
char b[10];
cin.get(a,10);//输入abcd efg
cin.get();
cin.get(b, 10);//输入gh
cout << a << endl;//输出abcd efg
cout << b << endl;//输出gh

getline()使用起来简单,但是get()更容易查错:检查下一输入字符,如果是换行符,说明已读取整行,否则说明该行中还有其他输入。这样便于判断停止读取的原因是已经读取了整行还是数组已填满。

同时输入数字和字符串容易遇到问题:

char a[10];
int c;
cin >> c;
cin.getline(a,10);//没有输入机会
cout << c << endl;
cout << a << endl;//输出空行

输入数字后留有一个换行符在输入队列中,换行符进入下一次输入,getline()读到换行符,输出空行。解决方法同上,加入一行cin.get(),或者先输入字符串再输入数字。
也可以将调用拼接:cin>>c 换成 (cin>>c).get()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值