C++ 从标准输入读取字符串,将读取的内容连接到一个大字符串中

C++ 从标准输入读取字符串,将读取的内容连接到一个大字符串中,c++,C++,由于某种原因,我无法让For循环工作。 它不打印任何东西。以下是代码: #include <iostream> #include <string> using std::string; using std::cin; using std::cout; using std::endl; int main() { string concatenated; for (string buffer; cin >> buffer; concatenat

由于某种原因,我无法让For循环工作。 它不打印任何东西。以下是代码:

#include <iostream>
#include <string>

using std::string;
using std::cin;
using std::cout;
using std::endl;

int main()
{
    string concatenated;
    for (string buffer; cin >> buffer; concatenated += buffer);
    cout << "The concatenated string is " << concatenated << endl;

    return 0;
}
#包括
#包括
使用std::string;
使用std::cin;
使用std::cout;
使用std::endl;
int main()
{
串接的字符串;
for(字符串缓冲区;cin>>缓冲区;连接+=缓冲区);

cout问题是
for loop
不会自动退出。它会不断地进入循环并等待下一个输入。这就是为什么您没有得到任何输出

您应该在Windows上输入Control+Z,在Unix平台上输入Control+D,以便在上输入EOF字符。 我想知道更多

代码很好

以下是我本地的输出。使用的代码与发布的代码相同,并且可用。

问题是循环的
不会自动退出。它会持续进入循环并等待下一个输入。这就是为什么您没有得到任何输出

您应该在Windows上输入Control+Z,在Unix平台上输入Control+D,以便在上输入EOF字符。 我想知道更多

代码很好

以下是我本地的输出。使用的代码与发布的代码相同,并且可用。

您需要一些东西来阻止循环等待更多的输入。您可以使用一个特殊的字符串来完成此操作

#include <iostream>
#include <string>

using std::string;
using std::cin;
using std::cout;
using std::endl;

int main()
{
    string concatenated;
    for (string buffer; cin >> buffer && buffer!="STOP"; concatenated += buffer);
    cout << "The concatenated string is " << concatenated << endl;

    return 0;
}
#包括
#包括
使用std::string;
使用std::cin;
使用std::cout;
使用std::endl;
int main()
{
串接的字符串;
用于(字符串缓冲区;cin>>缓冲区和缓冲区!=“停止”;串联+=缓冲区);

cout您需要一些东西来阻止循环等待更多的输入。您可以使用一个特殊的字符串来完成此操作

#include <iostream>
#include <string>

using std::string;
using std::cin;
using std::cout;
using std::endl;

int main()
{
    string concatenated;
    for (string buffer; cin >> buffer && buffer!="STOP"; concatenated += buffer);
    cout << "The concatenated string is " << concatenated << endl;

    return 0;
}
#包括
#包括
使用std::string;
使用std::cin;
使用std::cout;
使用std::endl;
int main()
{
串接的字符串;
用于(字符串缓冲区;cin>>缓冲区和缓冲区!=“停止”;串联+=缓冲区);

我不能复制。你真的输入了一些东西并按enter键吗?@ArkadyGodlin在这种情况下,它应该在那里。@Sniper2Wolf它正在工作。但也许最好在(…)的
后面有一个空块
{}
要发送电报说明发生了什么?我认为您应该添加一个退出字符串代码,以打破for循环。在visual studio 2015上,除了CTRL+C,我无法退出此循环,此键引发异常。我无法复制。您是否真的输入了一些内容并按enter键?@ArkadyGodlin在本例中,它应该在那里。@Sniper2Wolf确实如此工作fin。但也许在(…)
之后有一个空块
{}
更好,以反映发生了什么?我认为您应该添加一个退出字符串代码,以中断for循环。在visual studio 2015上,除了CTRL+C之外,我无法退出此循环,此键引发异常。