关于输入的一点小总结
2012-10-25 09:54
155 查看
现在的常用到的输入大抵有这几个:scanf, getchar, gets, cin, getline
我这里稍微总结下:
scanf() 以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中)
getchar() 以Enter结束输入,也不会舍弃最后的回车符(即回车符会残留在缓冲区中)
gets() 以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车符!(即回车符
不会 残留在缓冲区中)
cin 以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中)
getline 以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车符!(即回车符
不会 残留在缓冲区中)
概括来说scanf, getchar, cin 都是会残留回车, 而gets, getline就不会;
因此在平时应用的时候,如果在用gets 的时候恰好前面用了scanf, 记得用getchar 吃掉一个回车;
如果在用getline的时候前面恰好用了cin的话,,记得用cin.ignore清除一下回车, 或者吃掉这个字符,调用一次cin.get();
代码如下
[cpp]
view plaincopy
cin>>n;
cin.ignore();
for(int i = 0; i < n; i++)
getline(cin, org[i]);
以后了解到更多的话会继续更新!
我这里稍微总结下:
scanf() 以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中)
getchar() 以Enter结束输入,也不会舍弃最后的回车符(即回车符会残留在缓冲区中)
gets() 以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车符!(即回车符
不会 残留在缓冲区中)
cin 以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中)
getline 以Enter结束输入(空格不结束),接受空格,会舍弃最后的回车符!(即回车符
不会 残留在缓冲区中)
概括来说scanf, getchar, cin 都是会残留回车, 而gets, getline就不会;
因此在平时应用的时候,如果在用gets 的时候恰好前面用了scanf, 记得用getchar 吃掉一个回车;
如果在用getline的时候前面恰好用了cin的话,,记得用cin.ignore清除一下回车, 或者吃掉这个字符,调用一次cin.get();
代码如下
[cpp]
view plaincopy
cin>>n;
cin.ignore();
for(int i = 0; i < n; i++)
getline(cin, org[i]);
以后了解到更多的话会继续更新!
相关文章推荐
- 关于Java的二进制输入输出流的一点总结(有错误请指出)
- 本人遇到的关于namespace的一点小问题总结
- 关于各种输入输出流的二次理解总结 ,以及输入的三种方法总结。
- 关于hibernate级联的一点总结
- 面试总结:关于数据库范式的一点理解
- 关于json的一点总结
- 关于JS里面创建对象的一点总结
- 关于函数参数的一点总结
- 关于Promise的一点总结
- 关于词法分析的一点总结
- 关于NorFlash的一点总结
- 关于组合逻辑电路的一点总结和思考
- 关于JAVA集合类的一点总结!
- 关于px em rem的一点小总结
- iOS:关于iPhone连接Xcode时,RSA加密失败的一点总结
- 关于线程的一点总结
- 关于ActiveMQ的一点总结
- 关于<taglib>的uri的一点总结
- 关于PCA算法的一点学习总结
- 关于宏的一点总结(持续更新)