学习C ++,我不知道我在这里做错了什么

时间:2014-07-15 13:46:24

标签: c++

我正在学习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;

3 个答案:

答案 0 :(得分:5)

要输出结果,您必须使cin >> current为false。为此,请使用Ctrl-D将文件结束(EOF)发送到cin,这将导致循环停止执行。

编辑:显然在Windows中,序列为Ctrl-Z

编辑:正如@pdw所说,cout需要刷新。这通常在有换行符时完成,但由于你没有换行符,你可以使用std::flushstd::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;

退出循环