首页 > 其他 > 详细

关于cin,getline一起出现无法正常输入的问题

时间:2018-03-21 00:42:58      阅读:279      评论:0      收藏:0      [点我收藏+]
int N;
    char c;
    int num=0;
    string s;
     cin>>N>>c;

     getline(cin,s,\n);
     for(int i=0; s[i]!=\0;i++)
     {
         num++;
     }
     cout<<num<<endl;

 

这时cin(输入流)的状态被标志为遇到文件结尾,如果不调用in.clear()或其他可以清除流的状态的函数来将清除cin的状态,则cin被标志为遇到文件结尾的状态一起保持。到第二个 getline(cin, line)再次引用cin,则此时的cin的状态为遇到文件结束标志,无法输入,因此num始终为0;

一.调用clear()来清除cin的状态

二.cin.flush();

三.cin.ignore();

总有一款适合你……尝试了好多次,终于可以了!

string word;
// read until end-of-file, writing each word to a new line
cout<<"\nNow you can input as many words as you can. If you want to terminate, you may press Ctrl+z:\n";
while (cin >> word)
cout << word << endl;

cin.clear();//调用clear()来清除cin的状态

string line;
// read line at time until end-of-file
cout<<"\nNow you can input as many lines of words as you wish. To terminate, please press Ctrl+z:\n";
while (getline(cin, line))
cout << line << endl;
cin.clear();

keep_window_open();

关于cin,getline一起出现无法正常输入的问题

原文:https://www.cnblogs.com/lyqf/p/8614359.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!