有关连续cin输入数据(cin不丢弃回车符,>>会跳过回车符)
2014-09-04 20:28
239 查看
看到很多C++代码中写cin.get()后面注释说这是吸收回车符,不知道是什么意思!
看到很多C++代码中写cin.get()后面注释说这是吸收回车符,不知道是什么意思! 比如 cout<<"请输入学好、年龄和入学成绩:"<<endl; cin>>st1.id>>st1.age>>st1.score; cin.get(); 最后这个cin.get()书上说其功能是吸收回车符,请高手指点!
字符向来很难操作 因为你输入数据是以回车作为结束的,但是回车并没有输入到程序里面去,如果下面再出现要输入字符之类的语句,那么这个回车就先被输入,也就是会出现错误,所以在采集数据的时候,特别是好几种数据一起采集的时候,要十分注意回车符的问题。
回车符会留在缓冲区中,只不过cin流有一个默认状态是为输入操作符(即“>>"操作符)跳过空白,所以默认情况下用输入操作符读取时会跳过回车符等空白字符,实际上它是在缓冲区中的,可以通过noskipws操纵符让输入操作符不跳过空白字符,这样就可以读取到'\n'等空白字符了,如下: //--------------------------------------------------------------------------- #include <iostream> int main(void) { char m,n; std::cin>>m; std::cin>>std::noskipws>>n;//不忽略空白字符 return 0; } //--------------------------------------------------------------------------- std::skipws操纵符用来设置忽略空白字符。
因为cin.get()是获取一个字符,回车也是字符,cin.get()会把回车('\n')当作字符读入.而cin>>则会跳过回车或空格
相关文章推荐
- cin输入数据(cin不丢弃回车符,>>会跳过回车符)
- 关于while(cin>>str)输入无法结束的问题(转+修改)
- 关于用连续用多个scanf函数输入数据时前面的scanf函数会在缓冲区留下回车符的问题
- 有关while(cin>>str)的问题
- C++ 输入函数 cin>>、cin.getline()和cin.get()区别
- C++ 输入函数 cin>>、cin.getline()和cin.get()区别
- 文件输入输出流->带缓冲的输入输出流(过滤流)->基本数据的输入输出流 链接 增强了文件输入输出流的功能
- 血淋淋的教训:输入数据有多组:所以一定要while(cin>>str){}
- 标准输入cin的返回值以及while(cin>>x)的问题
- while(cin >> buf)在linux下实现停止输入的办法
- 将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:
- 一个正整数有可能可以表示为n(n>=2)个连续的正整数之和,如:15=1+2+3+4+5,15=4+5+6,15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
- C++ Primer 关于while(cin>>word) 退出循环问题
- 一个正整数有可能可以被表示为n(n>=2)个连续正整数之和--算法求解
- Control Study -> Asp.net几个较复杂的显示数据控件(Repeater/DataList/DataGrid)用法 (示例代码下载)
- JavaEE--------> Hibernate入门 -->使用Hibernate实现数据的删改
- SQL 函数----->数据类型转换函数 CAST()、CONVERT()
- 基于tcp/ip协议的Socket网络通讯 --> 简单的数据传送和库构造
- Control Study -> Asp.net几个较复杂的显示数据控件(Repeater/DataList/DataGrid)用法 (示例代码下载)
- 这个C++程序 输入一组数据 为何会输出很多个结果啊~ 是有关文件处理的