#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int T;
cin >> T;
char input[1000];
for(int i=0;i<T;i++)
{
cin.getline(input,sizeof(input));
cout << input << "\n";
}
return 0;
}
我目前在使用getline获取字符串输入时遇到问题,但它似乎只适用于短行。这是我的输入和输出:
输入:
3我现在可以装一个大容器的咖啡吗? 现在的茶容器现在我希望我能记得pi尤里卡 伟大的发明家圣诞布丁圣诞馅饼叫道 问题非常重要
输出:
我现在可以装一个大容器的咖啡吗? 现在的容器茶
它没有存储最后一行的原因?
答案 0 :(得分:3)
您可以使用string
代替char []
:
int main() {
int T;
cin >> T;
string input;
for(int i=0;i<T;i++)
{
std::getline(std::cin,input);
cout << input << endl;
}
return 0;
}
使用以下测试检查代码:
输入:
3 Can I have a large container of coffee right now Can I have a large container of tea right now Now I wish I could recollect pi Eureka cried the great inventor Christmas Pudding Christmas Pie Is the problems very center
输出:
3 Can I have a large container of coffee right now Can I have a large container of tea right now Now I wish I could recollect pi Eureka cried the great inventor Christmas Pudding Christmas Pie Is the problems very center
答案 1 :(得分:1)
您的问题是第一个输入操作符:
cin >> T;
这将读取一个数字并将其作为整数存储在T中,但在流中保留换行符。现在循环将读取三行,但第一行将是一个空行。
您可以通过多种方式解决此问题,最简单的方法是在获取数字后丢弃换行符:
cin >> T;
cin.getline(input, sizeof input);
更好的方法是检查文件结尾,而不是提前获取行数。并使用std::string
而不是其他人建议的char数组。
答案 2 :(得分:0)
尝试这样的事情
while(cin.getline(input,sizeof(input))){
}
答案 3 :(得分:0)
尝试:
int main() {
int T;
cin >> T;
std::string temp;
std::string input;
for(int i=0;i<T;i++)
{
while(std::getline(std::cin,temp)) {
input += temp;
}
std::cout << input << endl;
return 0;
}