打印与输入完全相同

时间:2018-03-11 08:03:16

标签: c++

这是我在Baekjoon提出问题的答案。 问题是编写一个与输入完全相同的程序。输入可以大到100行,每行最多包含100个字符(数字,字母,空格)。没有行以空格开头或结尾。

示例输入)

Hello
nice too meet
ya

示例输出)

Hello
nice too meet
ya

以下是我的问题代码。我测试了所有可能在我的知识范围内发生的情况,除了100行100个字符。它对我有用。但它一直没能通过测试。任何人都可以找到原因吗?

#include <iostream>
using namespace std;

int main()
{
    char* line[100];
    int count=0;
    for (int i = 0; cin.getline((line[i]= new char), 100); i++,count++) {
        if (cin.eof()) break;
    }

    for(int i=0; i<count;i++){
        cout << line[i] << endl;
    }
    return 0;
}

1 个答案:

答案 0 :(得分:2)

学习标准库。 C ++就是不重新发明轮子。有一个名为std :: ostringstream的缓冲区可以完成所有操作,而不需要对输入进行所有这些假设。此外,它还将针对流媒体进行高度优化。

#include <iostream>
#include <sstream>
int main() {
    std::ostringstream buffer{};
    buffer << std::cin.rdbuf();
    std::cout << buffer.str();
    return 0;
}

...或(效率较低),您可以使用字符串作为缓冲区。很多方法都是这样做的。

#include <string>
#include <iostream>
int main() {
    std::string buffer{};
    {  char ch;
       while (std::cin.get(ch)) buffer.push_back(ch);
    }
    std::cout << buffer;
    return 0;
}