cin 输入空格符和 getline() 忽略开头换行符
来源:互联网 发布:淘宝月销量怎么看 编辑:程序博客网 时间:2024/06/05 00:08
1、输入空格符
getline() 函数实际上有三个参数,第三个参数指定字符串的结束符,也就是当 getline() 函数遇到这个字符时,就不再接受输入了。例如
getline(cin, str, 's');
即使输入的是 abcsdef ,读入到 str 的内容却只有 abc ,因为遇到字符 ‘s’ 时,getline() 便停止读入了。
即输入 abcsabc 按回车键后,程序以 enter 作为输入完成的信号,getline() 函数开始读入缓冲区的内容,它将结束符 ‘s’ 前的部分读入到变量 str ,舍弃结束符 's' 及其后面的部分。
下面这段代码需要按两次回车键才能执行 cout 进行打印,则是因为 getline() 默认情况下以回车 ('/n') 作为结束符。第一次按回车时, getline() 将其作为读入的结束符,而非输入完成信号,第二次按回车才是输入完成的信号。
#include<iostream> #include<string> using namespace std; int main(){ string s; getline(cin,s); cout<<s; return 0; }
(本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lengyuhong/archive/2009/10/12/4659724.aspx)
那么,当程序循环调用 getline(cin, s) 时,如果不做任何处理,每隔一次的开头输入都是上次的输入完成信号即 enter,由于 getline() 并不忽略行开头的换行符,只要 getline() 遇到换行符,哪怕是第一个字符,getline() 也会将它作为本次输入的字符串结束符,它将会把本次输入的内容舍弃,而将开头的 enter 之前的部分(为空字符)读入到目标变量 ,导致第二次调用时读入变量的是空字符。
可以使用小节 2 中给出的方法解决该问题。
2、使用 cin.clear() 或 cin.ignore() 跳过最开始的终止符。例如
#include<iostream> #include<string>using namespace std; int main() { char str[8]; cin.getline(str, 5); cout << str << endl; cin.clear(); // 如果这里没有 clear,那么下面的输入就被忽略了,因为 cin 标志未清除 cin.getline(str, 5); cout <<str <<endl; system( "pause "); return 0; }
也可以用 cin.ignore(1)忽略一个字符,或cin.ignore(1024,'/n'),在遇到换行后或者忽略了1024个字符后不再忽略。
- cin 输入空格符和 getline() 忽略开头换行符
- getline()忽略开头换行符
- C++ 输入函数 cin>>、cin.getline()和cin.get()区别
- C++ 输入函数 cin>>、cin.getline()和cin.get()区别
- C++ 输入函数 cin>>、cin.getline()和cin.get()区别
- C++ 输入函数 cin>>、cin.getline()和cin.get()区别
- C++ 输入函数 cin>>、cin.getline()和cin.get()区别
- getline和cin.getline
- cin.()和cin.getline()
- myEclipse 出现换行符和空格符 解决方案
- c++中输入字符串--cin.get和cin.getline用法
- c++用cin和getline实现输入回车结束输入
- cin.get 和 cin.getline
- cin.getline()和cin.get()
- cin>>和cin.get()和cin.getline()
- C++中几个输入函数的用法和区别(cin、cin.get()、cin.getline()、getline()、gets()、getchar()))
- cin和getline输入的一个小问题
- cin 和 getline()
- android的调试工具集
- linux sed 命令详解
- CSDN 个人签名 插件使用帮助
- 教你从头到尾彻底理解KMP算法
- Java基础4_面向对象下4接口和匿名类
- cin 输入空格符和 getline() 忽略开头换行符
- AIX 中的内存分配机制
- 固定电阻器的型号命名方法
- seam-gen error
- 程序员需要具备的基本技能
- Custom UITableViewCell 自定义UILabel 宽度的问题
- Android NDK开发环境搭建(Windows7平台)
- 同事的你
- PJSIP 在LINUX系统下编译