我正在学习C ++,并且我被要求使用while函数编写代码。代码运行,但它不会打印行Dear ...
。我在这里做错了什么?
cout << "Hello! Please write your recipient and the letter, then press enter:\n";
string name{ "" };
string current{ "" };
string letter{ "" };
cin >> name;
while (cin >> current){
if (current != name){
letter += " " + current;
}
}
cout << "Dear " << name << "," << letter;
keep_window_open();
return 0;
答案 0 :(得分:5)
要输出结果,您必须使cin >> current
为false。为此,请使用Ctrl-D
将文件结束(EOF)发送到cin
,这将导致循环停止执行。
编辑:显然在Windows中,序列为Ctrl-Z
。
编辑:正如@pdw所说,cout
需要刷新。这通常在有换行符时完成,但由于你没有换行符,你可以使用std::flush
或std::endl
:
cout << "Dear " << name << "." << letter << std::flush;
答案 1 :(得分:0)
while (cin >> current)
要进行此循环中断,您需要将流末尾标记放入std::cin
。在Windows上输入Ctrl-Z
或在输入结束时在类似Unix的系统上输入Ctrl-D
来实现此目的。
答案 2 :(得分:0)
这里有一个无限循环。 while (cin >> current)
将始终评估为true,并将持续等待用户输入。这就是为什么你永远不会到达最后一行代码。您只是在提示中的每个输入上不断创建当前的新值,然后将它们添加到letter中。我建议不要使用while循环,或设置一些转义输入。例如,如果用户输入完成,请使用break;