c++中的两种getline用法详解

C++中的两种getline用法详解

在C++中,getline函数是一个十分常用的函数,它的作用是从输入流中读取一行数据并存放到一个string类型的变量中。但实际上,C++中有两种不同的getline函数使用方式,这里将对它们进行详细讲解。

getline(istream& is, string& str)

这种用法是getline函数的最基本用法,它的函数原型如下:

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

它的作用是从输入流is中读取一行数据,存放到str对应的string类型变量中,直到读取到换行符或文件结束符EOF为止。如果成功读取到数据,则返回输入流is的引用;否则,返回NULL

以下代码展示了如何使用getline(istream& is, string& str)函数,从标准输入中读取一行数据并打印输出:

#include <iostream>
using namespace std;

int main()
{
    string str;
    getline(cin, str);
    cout << str << endl;

    return 0;
}

上述代码首先定义了一个string类型的变量str,然后调用getline函数从标准输入流cin中读取一行数据,将数据存放到str对应的string类型变量中,并打印输出。

运行程序后,我们可以输入一行数据并回车,该程序将会输出我们输入的那行数据。

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

这种用法是在基本用法的基础上增加了一个参数,即限定读取数据的分隔符。它的函数原型如下:

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

它的作用是从输入流is中读取一行数据,存放到str对应的string类型变量中,直到读取到指定的分隔符delim或文件结束符EOF为止。如果成功读取到数据,则返回输入流is的引用;否则,返回NULL

以下代码展示了如何使用getline(istream& is, string& str, char delim)函数,从标准输入中以逗号分隔的形式读取三个单词,并打印输出:

#include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main()
{
    string input;
    getline(cin, input);

    stringstream ss(input);
    string word;
    while (getline(ss, word, ','))
    {
        cout << word << endl;
    }
    return 0;
}

上述代码首先定义了一个名为input的string类型变量,然后通过getline(cin, input)从标准输入中读取一行数据,存放到input中。接着,将输入的数据放入一个stringstream对象ss中,使用getline函数读取其中的单词,并以逗号为分隔符进行划分。

运行程序后,我们可以输入三个单词,以逗号分隔,程序将会按照逗号进行划分,并将三个单词打印输出。

总结

C++中的getline函数是一个功能强大的函数,可根据需求选择不同的使用方式。基本用法适用于读取文本文件中的一行数据或从标准输入中读取一行数据,而带有分隔符的用法则适用于读取以特定分隔符分割的数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++中的两种getline用法详解 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • 基于C语言字符串函数的一些使用心得

    基于C语言字符串函数的一些使用心得 字符串和字符数组的区别 在C语言中,字符串常常被称为字符数组,因为字符串本身就是由字符组成的数组。一个字符串是一个以空字符(‘\0’)结尾的字符数组。而字符数组则没有这样的限制。 下面是一个字符串和一个字符数组的例子: char str[] = "Hello World!"; // 字符串 char a…

    other 2023年6月20日
    00
  • php开源项目大全

    PHP开源项目大全 PHP开源项目有很多,下面列出了一些我认为值得关注的项目。这些项目可以做到从前端的UI到后端的数据库、缓存等都是完整的,可以帮助开发者快速开发自己的项目,提高工作效率。这些项目都是在GitHub上开源的,大家可以自由的下载、学习、使用、修改、分享。下面是具体的项目列表: 1. Laravel Laravel是一套简洁、优雅的PHP Web…

    其他 2023年3月29日
    00
  • ReentrantLock获取锁释放锁的流程示例分析

    ReentrantLock是一个可重入锁,和synchronized关键字一样,在Java中被广泛使用。但是,相较于synchronized关键字,ReentrantLock在一些场景下表现得更好,比如可以响应中断、可以指定尝试获取锁的时间等等。 ReentrantLock获取锁和释放锁是一个比较重要的知识点,我们需要深入了解其工作流程。下面,我们将通过两个…

    other 2023年6月27日
    00
  • 5分钟快速安装redmine项目管理软件

    当然,我很乐意为您提供有关“5分钟快速安装Redmine项目管理软件”的完整攻略。以下是详细的步骤和两个示例: 1 安装Redmine 要安装Redmine,可以使用以下步骤: 安装必要的软件包 sudo apt-get update sudo apt-get install -y build-essential ruby ruby-dev libmysql…

    other 2023年5月6日
    00
  • xcode好用的插件(随时更新)

    Xcode好用的插件(随时更新) 作为iOS或macOS开发者,Xcode是我们必备的开发工具之一。而在Xcode的开发过程中,有很多插件可以提高我们的开发效率和舒适度。在这篇文章中,我将会介绍一些我个人认为好用的插件,并且会随时更新以保证插件的实用性和最新性。 Alcatraz Alcatraz是Xcode插件管理器,它可以帮助我们安装、更新或卸载插件,使…

    其他 2023年3月29日
    00
  • 微信小程序开发之自定义tabBar的实现

    一、自定义tabBar的实现背景 在微信小程序开发中,tabBar的导航栏是小程序重要的导航工具,通常我们使用微信小程序自带的tabBar来实现导航功能,但是在特殊的业务场景中(如需要更多的自定义UI、不需要icon+text的组合形式等),需使用自定义tabBar来实现更好的用户体验。 二、自定义tabBar的实现 1.创建一个自定义tabBar组件 首先…

    other 2023年6月25日
    00
  • python中面向对象的注意点概述总结

    Python中面向对象的注意点概述总结 面向对象编程(Object-Oriented Programming,简称OOP)是一种常用的编程范式,Python也支持面向对象编程。在使用Python进行面向对象编程时,有一些注意点需要特别关注。本文将详细讲解Python中面向对象的注意点,并提供两个示例说明。 1. 类的定义和实例化 在Python中,类是对象的…

    other 2023年8月8日
    00
  • c# 串口发送接收数据

    C#串口发送接收数据的完整攻略 在C#中,可以使用串口通信来实现与外部设备的数据交互。本文将为您提供一份完整攻略,包括串口的打开、发送和接收等操作,并提供两个示例说明。 打开串口 在C#中,可以使用SerialPort类来打开串口。可以按照以下步骤进行操作: 创建SerialPort对象。 设置串口的属性,包括端口号、波特率、数据位、停止位和校验位等。 调用…

    other 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部