从用户读取字符串

Reading a string from user

本文关键字:字符串 读取 用户      更新时间:2023-10-16
#include<iostream>
#include<cstring>
using namespace std;
int main() {
    int t;
    cin >> t;
    string s;
    getline(cin, s);
    cout << s;
    return 0;
}

在输入t后,只要按回车键,程序就会终止,因为字符串接受换行符作为输入。我能做什么?我不能在这两个输入之间输出任何东西,并且t后面的回车是强制性的。

按下结束t输入的Enter键被添加到输入缓冲区中。因此getline看到的缓冲区中的第一个输入是输入键,它认为您给出了空行。

使用ignore函数跳过换行符:

std::cin.ignore(std::numeric_limits<std::streamsize>::max(), 'n');

您也可以使用两个std::getline调用,并使用例如std::stoi将输入转换为int。或者放入std::istringstream,然后使用正常的>>操作符提取。

您可以使用两次getline(cin, s)。第一行将忽略第一行的其余部分,第二行将实际读取您需要的内容,或者更好地使用cin.ignore()和适当的参数