C++使用string.getline()和cin混合输入的问题(cin清空缓存)
来源:互联网 发布:游戏推荐 知乎 编辑:程序博客网 时间:2024/05/16 11:38
string的getline(cin, str)直接把输入存到string对象中,更为方便(cin的getline接受的是*char)
若要求先输入一行(使用string的getline),再输入一个其他的什么东西(使用cin),如下代码所示,可能会乱。第一次输入显示正常,第二次输入的时候getline得到空字符串,cin得到字符串的第一个字符,猜测原因是cin留下了一个回车,这个回车被getline接收了
int main() { string s; char c; while(getline(cin, s)){ cin >> c; cout << "String : " << s << endl; cout << "Char : " << c << endl; } return 0;}
解决方法就是在cin之后,getline之前清空cin缓冲区,使用cin.sync(),如下所示
int main() { string s; char c; while(getline(cin, s)){ cin >> c; cout << "String : " << s << endl; cout << "Char : " << c << endl; cin.sync(); } return 0;}
至此程序达到目的。使用编译器为MinGW。
0 0
- C++使用string.getline()和cin混合输入的问题(cin清空缓存)
- cin的用法及清空输入缓冲区问题
- cin的用法及清空输入缓冲区问题
- cin.get();cin.getline();getline(cin,string);cin.ignore()的理解
- C++:cin、cin.getline()、getline()的用法
- C++:cin\cin.getline()\getline()的用法
- cin和getline与string问题
- cin和getline输入的一个小问题
- cin.()和cin.getline()
- VC问题:cin.get和cin.getline的区别?
- C++中cin和cin.getline函数连用的问题
- 【C++】cin、cin.get(char)和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()区别
- (VS2012)C++行输入函数的使用(scanf_s,cin.getline,cin.get)
- 超简单Android Studio导入第三方库(SlidingMenu)教程绝对傻瓜版
- C++访问控制——三种继承方式
- android开发依赖注入-RoboGuice
- JNI之——'cl' 不是内部或外部命令,也不是可运行的程序或批处理文件
- JAVA设计模式之单例设计模式
- C++使用string.getline()和cin混合输入的问题(cin清空缓存)
- 一盞茶心文中絡
- shell基本
- Android sdk更新设置
- 解决get方法传递URL参数中文乱码问题
- link流程 建立时需要注意的地方
- ZOJ 3471 Most Powerful
- 光明日报出版社-出版社介绍
- storyboardds 中的视图控制器的 exit (storyboards中的unwind)使用