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()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Qt编写秒表功能

    Qt编写秒表功能

    这篇文章主要为大家详细介绍了Qt编写秒表功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • 深入理解C++中public、protected及private用法

    深入理解C++中public、protected及private用法

    这篇文章主要介绍了C++中public、protected及private用法,对于C++面向对象程序设计来说是非常重要的概念,需要的朋友可以参考下
    2014-08-08
  • C/C++程序链接与反汇编工具objdump的使用介绍

    C/C++程序链接与反汇编工具objdump的使用介绍

    这篇文章主要介绍了C/C++程序链接与反汇编工具objdump的使用,程序构建过程的第二个阶段就是链接,链接过程输入的是目标文件的集合。每个目标文件可以被看作单个源代码文件的二进制存储版本
    2023-02-02
  • linux c 获取本机公网IP的实现方法

    linux c 获取本机公网IP的实现方法

    本篇文章是对在linux中使用c语言获取本机公网IP的方法进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • C++利用socket传输大文件的实现代码

    C++利用socket传输大文件的实现代码

    这篇文章主要为大家详细介绍了C/C++如何使用socket传输大文件的实现代码,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
    2023-10-10
  • 使用WindowsAPI获取录音音频的方法

    使用WindowsAPI获取录音音频的方法

    这篇文章主要介绍了使用WindowsAPI获取录音音频的方法,非常实用的功能,需要的朋友可以参考下
    2014-08-08
  • C++ 标准模板类详解

    C++ 标准模板类详解

    今天小编就为大家分享一篇关于C++标准模板类的介绍与使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2021-09-09
  • C++学习之如何进行内存资源管理

    C++学习之如何进行内存资源管理

    与java、golang等自带垃圾回收机制的语言不同,C++并不会自动回收内存,这往往会导致内存泄漏和内存溢出等问题,所以掌握C++中的内存管理技巧和工具是非常重要的,本文就来和大家详细讲讲
    2023-05-05
  • C语言单链表常见操作汇总

    C语言单链表常见操作汇总

    这篇文章主要介绍了C语言单链表常见操作,需要的朋友可以参考下
    2014-07-07
  • C/C++中输入多组数据的方法

    C/C++中输入多组数据的方法

    这篇文章主要为大家详细介绍了C/C++中输入多组数据的三种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论