#include<iostream>
#include<cstring>
using namespace std;
int main() {
int t;
cin >> t;
string s;
getline(cin, s);
cout << s;
return 0;
}
只要在输入t后按回车键,程序就会终止,因为字符串将换行符作为输入。我能做什么?我不能在这两个输入之间输出一些东西,并且必须在输入后输入。
答案 0 :(得分:2)
您按下以结束t
输入的 Enter 键被添加到输入缓冲区。所以getline
看到的缓冲区中的第一个输入是 Enter 键,它认为你给了一个空行。
使用ignore
功能跳过换行符:
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
您还可以使用两个std::getline
来电,并使用例如std::stoi
将输入转换为int
。或者输入std::istringstream
并使用普通>>
运算符进行提取。
答案 1 :(得分:1)
您可以使用getline(cin, s)
两次。 Fist将忽略第一行的其余部分,第二行将实际读取您需要的内容或更好地使用cin.ignore()
使用适当的参数