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

时间:2018-04-10 10:46:55

标签: c++

出于某种原因,我无法让循​​环工作。 它不会打印任何东西。这是代码:

#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;
}

2 个答案:

答案 0 :(得分:3)

问题是for-loop不会自动退出。它不断循环并等待下一个输入。这就是为什么你没有得到任何外包的原因。

您应该在Windows上输入 Control + Z ,在Unix平台上输入 Control + D 以输入EOF字符。 请参阅this了解详情。

代码很好。 See it working here

以下是我当地的输出。使用的代码与已发布和可用here相同 enter image description here

答案 1 :(得分:1)

您需要一些东西来阻止循环等待更多输入..您可以使用特殊字符串来执行此操作..

#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;
}