C++ string类getline()用法实例详解

 更新时间:2024年03月13日 11:20:06   作者:Alkali!  
C++ getline()是一种标准库函数,用于从输入流中读取字符串或行,它是<string>标头的一部分,本文介绍C++ string类getline()用法详解,感兴趣的朋友一起看看吧

有时候我们希望在最终的字符串中保留输入时的空白符,这时候应该用getline函数来替代原来的>>运算符。( cin 不能输入包含嵌入空格的字符串
getline函数的参数是一个输入流和一个string对象,原型是:getline(cin,string对象),函数从给定的输入流中读入内容,直到遇到换行符为止,但是此时的换行符要被读入,然后把所读入的内容存到string对象中,但此时不存入最后那个换行符
<string>中的getline函数有四种重载形式:

istream& getline (istream&  is, string& str, char delim);
istream& getline (istream&& is, string& str, char delim);
istream& getline (istream&  is, string& str);
istream& getline (istream&& is, string& str);

读取的istream是作为参数is传进函数的,读取的字符串保存在string类型的str中。

函数的变量:

  • is :表示一个输入流,例如 cin。
  • str :string类型的引用,用来存储输入流中的流信息
  • delim :char类型的变量,所设置的截断字符在不自定义设置的情况下,遇到’\n’,则终止输入

getline只要遇到换行符就停止读入并且返回string对象,哪怕一开始输入就是换行符也是如此,只不过会返回一个空的string对象。和输入运算符一样,getline也会返回它的流参数,所以可以用getline的结果作为条件。

//参考代码
#include<iostream>
#include<string>
using namespace std;
int main()
{
    string line;//每次读入一整行,直到遇到换行符结束读入
    while (getline(cin,line))
        if (!line.empty())
            cout << line << endl;
    system("pause");
    return 0;
}

分析一下while(getline(cin,line))

(注意:这里默认回车符停止读入,按Ctrl+Z(Windows)(Ctrl+D(Linux))即可退出循环。)

这个语句中,while判断语句的真实判断对象是cin的状态,也就是判断当前是否存在有效的输入流

而输入流是对象,判断的是流返回的状态。所以正常的情况下,你怎么输入都是跳不出它的循环。

在这之中可能会用些人误以为while判断语句的判断对象是line(也就是line是否为空),想通过回车来跳出循环,却发现不能跳出循环。

而回车和设置的终止符都是终止getline()函数的读取操作的。但是while判断语句判断的是getline()函数的输入流是否有效

到此这篇关于C++ string类getline()用法详解的文章就介绍到这了,更多相关C++ string类getline()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++ 中循环链表和约瑟夫环

    C++ 中循环链表和约瑟夫环

    这篇文章主要介绍了C++ 中循环链表和约瑟夫环的相关资料,需要的朋友可以参考下
    2017-06-06
  • 使用C++实现监控文件是否被修改

    使用C++实现监控文件是否被修改

    软件开发过程中经常会用到配置文件,某些应用场景要求在软件运行时动态修改配置文件,此时就需要监控配置文件是否被修改,下面我们就来看看如何使用C++实现这一功能吧
    2024-02-02
  • C++面向对象语言自制多级菜单功能实现代码

    C++面向对象语言自制多级菜单功能实现代码

    菜单类主要负责菜单的创建、修改、删除,是包含菜单结构组织和响应函数的模型,用户拥有充分的自主性,可根据需要自定义菜单显示和响应函数,这篇文章主要介绍了C++面向对象语言自制多级菜单,需要的朋友可以参考下
    2024-06-06
  • opencv图片的任意角度旋转实现示例

    opencv图片的任意角度旋转实现示例

    这篇博客将介绍如何使用OpenCV旋转图像任意角度,实现各个角度的旋转,具有一定的参考价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-06-06
  • C++全排列中递归交换法实例详解

    C++全排列中递归交换法实例详解

    在本篇文章里小编给各位整理的是关于C++全排列中递归交换法实例内容,有兴趣的朋友们可以学习下。
    2020-02-02
  • 用C语言求解第N项斐波那契数列问题

    用C语言求解第N项斐波那契数列问题

    这篇文章主要介绍了用C语言求解第N项斐波那契数列问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C++中四种加密算法之DES源代码

    C++中四种加密算法之DES源代码

    本篇文章主要介绍了C++中四种加密算法之DES源代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。
    2016-11-11
  • C++调用matlab函数的实例

    C++调用matlab函数的实例

    这篇文章主要介绍了C++调用matlab函数的方法,包括封装matlab函数,编译matlab函数及C++环境配置,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • C++ 实现汉诺塔的实例详解

    C++ 实现汉诺塔的实例详解

    这篇文章主要介绍了C++ 实现汉诺塔的实例详解的相关资料,这里主要说明C++中数据结构的递归的应用,需要的朋友可以参考下
    2017-08-08
  • 基于c++11的event-driven library的理解

    基于c++11的event-driven library的理解

    这篇文章主要介绍了基于c++11的event-driven library的理解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02

最新评论