【C++】通过getline读取一行输入

发布时间:2024年01月22日

如果用cin读取字符串,则其会在读到空格之后停止。

比如说,我们写这样一个程序:

#include <iostream>
#include <string>

int main()
{
    std::string first_name;
    std::string last_name;
    
    std::cout << "what is your first name?" << std::endl;
    std::cin >> first_name;

    std::cout << "what is your last name?" << std::endl;
    std::cin >> last_name;

    std::cout << "Your name is: " << last_name << " " << first_name << std::endl;

    return 0;
}

有的时候一个人的名字中间可能有空格,比如说,其first_name为"Mei mei"

则输出如下:

因为读到Mei后面的空格cin结束,所以last_name?读入Mei,程序结束

我们不想这样,那怎么读入一行呢?使用getline()函数

修改程序为:

#include <iostream>
#include <string>

int main()
{
    std::string first_name;
    std::string last_name;
    
    std::cout << "what is your first name?" << std::endl;
    getline(std::cin, first_name);

    std::cout << "what is your last name?" << std::endl;
    getline(std::cin, last_name);

    std::cout << "Your name is: " << last_name << " " << first_name << std::endl;

    return 0;
}

getline的第一个参数指定从哪里读取信息(即std::cin的标准输入流),第二个参数指定读取的位置

运行这个程序:

可见得到正确结果?

文章来源:https://blog.csdn.net/weixin_63160898/article/details/135734123
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。