我正在通过B. Stroustrup的编程原理和练习使用C ++ ,我在其中一个练习中遇到了问题。我使用的是Windows 10(我相信,这与此相关)。 下面的代码应该向用户询问要打印的单词。但是,如果一个词是"西兰花",那么而不是"西兰花"," BLEEP"将被打印。
#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
inline void keep_window_open() { char ch; cin >> ch; }
int main()
{
string bad_word = "broccoli";
cout << "type in some words\n";
vector <string> words;
for (string temp; cin >> temp; )
words.push_back(temp);
cout << "There are " << words.size() << " words in vector 'words'.\n";
for (string word : words) {
if (word != bad_word)
cout << word;
else
cout << "BLEEP";
}
keep_window_open();
return 0;
}
所以,我有我的程序问我的话,我打印一些,然后按Ctrl + Z + Enter,没有任何反应。如果我再次这样做,控制台将关闭。为什么不打印此行指定的字数?
cout << "There are " << words.size() << " words in vector 'words'.\n";
为什么程序在按Ctrl + Z +第二次输入后完成执行? 我想了解这里的问题究竟是什么。 谢谢。
答案 0 :(得分:0)
ctrl-z
是文件结束信号。
这会禁用输入流(cin
)的读取。
所以你的保持窗口打开功能立即返回而不等待(因为无法读取),并且你的控制台关闭了。