从用户读取字符串

时间:2016-08-07 11:16:39

标签: c++ string

#include<iostream>
#include<cstring>
using namespace std;

int main() {
    int t;
    cin >> t;

    string s;
    getline(cin, s);
    cout << s;

    return 0;
}

只要在输入t后按回车键,程序就会终止,因为字符串将换行符作为输入。我能做什么?我不能在这两个输入之间输出一些东西,并且必须在输入后输入。

2 个答案:

答案 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()使用适当的参数

相关问题