这是我在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;
}
答案 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;
}