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

Posted lyqf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于cin,getline一起出现无法正常输入的问题相关的知识,希望对你有一定的参考价值。

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一起出现无法正常输入的问题的主要内容,如果未能解决你的问题,请参考以下文章

关于scanf 与 cin gets(),getline()......输入输出字符串的区别

我无法使用 cin.getline() 从用户那里获取 3 个字符串并使用指针数组来存储它们

关于 getline(cin, string) 的 C++ 快速问题

无法使用 cin.getline 读取字符数组

无法读取最后一行,使用 getline() [重复]

使用 getline(cin, string) 时,cin 自动取值,无需询问