- 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();
来源: http://www.bubuko.com/infodetail-2533556.html