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

yizhihongxing

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日

相关文章

  • java数据结构实现双向链表功能

    Java数据结构中实现双向链表,可以按照以下步骤进行: 1.定义节点类Node,包含成员变量value、previous、next: public class Node { int value; Node previous; Node next; public Node(int v) { value = v; } } 2.定义双向链表类DLinkedList…

    other 2023年6月27日
    00
  • iPhone XR升级iOS13.5.1玩游戏卡顿掉帧解决方法

    iPhone XR升级iOS13.5.1玩游戏卡顿掉帧解决方法攻略 如果你是iPhone XR用户,升级了iOS13.5.1系统后玩游戏会出现卡顿掉帧的问题,这里提供一些解决方法。以下是完整攻略的步骤和示例说明: 步骤1:清空后台应用 iOS系统会在后台保存一些应用,占用着系统资源。清空后台应用可以释放一些资源,提高游戏性能。 示例说明: 双击iPhone …

    other 2023年6月27日
    00
  • .NET分页控件简单学习

    下面是对“.NET分页控件简单学习”的详细讲解攻略。 1. 简介 .NET分页控件是一种方便用户进行数据分页的控件。在大数据量的情况下,数据一次性展示在页面上不仅会降低网站性能,还会影响用户体验。因此使用.NET分页控件,将数据按照规定的条数进行分页展示,可以有效提高页面的性能,让用户能够更加便捷地获取需要的数据。 2. 安装 在使用.NET分页控件之前,需…

    other 2023年6月26日
    00
  • C sharp #001# hello world

    C#是一种面向对象的编程语言,由微软公司开发。本文将详细讲解如何使用C#编写一个Hello World程序,并提供两个示例说明。 Hello World程序 Hello World程序是编程语言中最简单的程序,它的作用是输出“Hello World”这个字符串。下面是使用C#编写Hello World程序的步骤: 步骤1:创建一个新的C#控制台应用程序 在V…

    other 2023年5月5日
    00
  • C 语言环境设置详细讲解

    C 语言环境设置详细讲解 设置开发环境 在进行 C 语言开发之前,需要安装相应的开发环境,包括编译器和集成开发环境。以下是安装步骤: 安装编译器 Windows 系统可以安装 GCC 编译器。安装步骤如下: a. 下载 MinGW 安装程序,选择 mingw-get-setup.exe。 b. 运行安装程序,按照提示安装 MinGW。 c. 安装完成后,在系…

    other 2023年6月26日
    00
  • 开源纯C#工控网关+组态软件

    本文将介绍如何使用C#开发一个工控网关和组态软件,并将其开源。本文将分为两部分,第一部分介绍如何开发工控网关,第二部分介绍如何开发组态软件。 1. 开发工控网关 1.1 硬件选型 工控网关需要具备以下功能: 支持多种通信协议,如Modbus、OPC UA等; 支持多种物联网协议,如MQTT、CoAP等; 支持多种接口,如RS232、RS485、Etherne…

    other 2023年5月5日
    00
  • FTP主动模式和被动模式区别详解

    FTP主动模式和被动模式区别详解 概述 FTP(File Transfer Protocol)是一种传输文件的协议。在FTP协议中,有两种不同的传输模式,即FTP主动模式和被动模式。这两种模式都具有自己的优势和弱点。 FTP主动模式 FTP主动模式是最常用的模式。在FTP主动模式中,数据传输端口是客户端向FTP服务器开放的。这意味着FTP服务器向客户端主动发…

    other 2023年6月27日
    00
  • SQL Server Reporting Services 匿名登录的问题及解决方案

    实现SSRS匿名登录是一项常见的需求,但它涉及到一些默认安全限制,因此需要掌握一些技巧来处理。本文将详细讲解匿名登录的问题及解决方案。 1. 问题描述 在默认情况下,SSRS报表需要认证用户才能访问报表,这意味着,无论在本地还是在远程环境中,用户必须提供正确的凭据才能访问报表。而有些情况下,我们希望用户能够匿名访问报表而无需提供凭据。如果您尝试访问报表服务器…

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