C++编程语言中stringstream类介绍

C++编程语言中stringstream类介绍本文主要介绍C++编程语言中stringstream类的相关知识,同时通过示例代码介绍stringstream类的使用方法。1概述<sstream>定义了三个类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。本文以stringstream为主,介绍流的输入和输出操作。<sstream>主要用来进行数据类型转换,由于<sstream>使用string对

大家好,又见面了,我是你们的朋友全栈君。

本文主要介绍 C++ 编程语言中 stringstream 类的相关知识,同时通过示例代码介绍 stringstream 类的使用方法。

1 概述

<sstream> 定义了三个istringstreamostringstream stringstream,分别用来进行流的输入、输出和输入输出操作。本文以 stringstream 为主,介绍流的输入和输出操作。

<sstream> 主要用来进行数据类型转换,由于 <sstream> 使用 string 对象来代替字符数组(snprintf 方式),避免了缓冲区溢出的危险;而且,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符号的问题。简单说,相比 C 编程语言库的数据类型转换,<sstream> 更加安全、自动和直接。

2 示例代码

2.1 数据类型转换

这里展示一份示例代码,介绍将 int 类型转换为 string 类型的过程。

示例代码(stringstream_test1.cpp)的内容如下:

#include <string>
#include <sstream>
#include <iostream>
#include <stdio.h>

using namespace std;

int main()
{
    stringstream sstream;
    string strResult;
    int nValue = 1000;

    // 将int类型的值放入输入流中
    sstream << nValue;
    // 从sstream中抽取前面插入的int类型的值,赋给string类型
    sstream >> strResult;

    cout << "[cout]strResult is: " << strResult << endl;
    printf("[printf]strResult is: %s\n", strResult.c_str());

    return 0;
}

编译并执行上述代码,结果如下:

C++编程语言中stringstream类介绍

2.2 多个字符串拼接

本示例介绍在 stringstream 中存放多个字符串,实现多个字符串拼接的目的(其实完全可以使用 string 类实现),同时,介绍 stringstream 类的清空方法。

示例代码(stringstream_test2.cpp)的内容如下:

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

using namespace std;

int main()
{
    stringstream sstream;

    // 将多个字符串放入 sstream 中
    sstream << "first" << " " << "string,";
    sstream << " second string";
    cout << "strResult is: " << sstream.str() << endl;

    // 清空 sstream
    sstream.str("");
    sstream << "third string";
    cout << "After clear, strResult is: " << sstream.str() << endl;

    return 0;
}

编译并执行上述代码,结果如下:

C++编程语言中stringstream类介绍

从上述代码执行结果能够知道:

  • 可以使用 str() 方法,将 stringstream 类型转换为 string 类型;
  • 可以将多个字符串放入 stringstream 中,实现字符串的拼接目的;
  • 如果想清空 stringstream,必须使用 sstream.str(“”); 方式;clear() 方法适用于进行多次数据类型转换的场景。详见示例 2.3。

2.3 stringstream的清空

清空 stringstream 有两种方法:clear() 方法以及 str(“”) 方法,这两种方法对应不同的使用场景。str(“”) 方法的使用场景,在上面的示例中已经介绍过了,这里介绍 clear() 方法的使用场景。

示例代码(stringstream_test3.cpp)的内容如下:

#include <sstream>
#include <iostream>

using namespace std;

int main()
{
    stringstream sstream;
    int first, second;

    // 插入字符串
    sstream << "456";
    // 转换为int类型
    sstream >> first;
    cout << first << endl;

    // 在进行多次类型转换前,必须先运行clear()
    sstream.clear();

    // 插入bool值
    sstream << true;
    // 转换为int类型
    sstream >> second;
    cout << second << endl;

    return 0;
}

编译并执行上述代码,结果如下:

C++编程语言中stringstream类介绍

注意:在本示例涉及的场景下(多次数据类型转换),必须使用 clear() 方法清空 stringstream,不使用 clear() 方法或使用 str(“”) 方法,都不能得到数据类型转换的正确结果。下图分别是未使用 clear() 方法、使用 str(“”) 方法代替 clear() 方法时的运行结果:

C++编程语言中stringstream类介绍

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/130208.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 关于kindeditor中如何设置富文本编辑器中的内容

    关于kindeditor中如何设置富文本编辑器中的内容关于kindeditor中如何设置富文本编辑器中的内容KindEditor.html(id,value);我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown将代码片显示选择的高亮样式进行展示;增加了…

  • 陶瓷电容分类_陶瓷电容电压级别分类

    陶瓷电容分类_陶瓷电容电压级别分类陶瓷电容分为贴装陶瓷电容和插装陶瓷电容两大类。贴装陶瓷电容是多层陶瓷电容,一般耐压不会超过50V,而层数可以达到4000层,插装的陶瓷电容中包括圆片陶瓷电容和独石电容。圆片陶瓷电容也称瓷片电容,是单层的,耐压从50V~6000V都较为普遍。同样容值下,瓷片电容受温度影响更小,更适合应用在微弱信号放大电路的滤波中。独石电容全称是片式多层陶瓷电容器,(网上有资料说其实就是陶瓷贴片电容的

  • Spring入门第一讲——Spring框架的快速入门[通俗易懂]

    Spring入门第一讲——Spring框架的快速入门[通俗易懂]Spring的概述什么是Spring据度娘所载:Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnson创建。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。Spring是一个开源框架,Spring是于2003年兴起的一个轻量级的Java开发框架,由RodJohnson在其著作Exp

  • 什么是JavaBean、bean? 什么是POJO、PO、DTO、VO、BO ? 什么是EJB、EntityBean?

    什么是JavaBean、bean? 什么是POJO、PO、DTO、VO、BO ? 什么是EJB、EntityBean?前言:在Java开发中经常遇到这些概念问题,有的可能理解混淆,有的可能理解不到位,特此花了很多时间理顺了这些概念。不过有些概念实际开发中并没有使用到,可能理解还不够准确,只能靠后续不断纠正了。1、什么是POJO?POJO(PlainOldJavaObject)这种叫法是MartinFowler、RebeccaParsons和JoshMacKenzie在2000年的一…

  • vShpere云操作系统之六在HA中安装虚拟机及进行ha测试

    vShpere云操作系统之六在HA中安装虚拟机及进行ha测试

  • idea 创建 JavaWeb 项目(主要 idea2022)

    idea 创建 JavaWeb 项目(主要 idea2022)关于idea如何新建JavaWeb项目的详细步骤,由于2022版本新建有所改动,所以需要一篇新的博客来帮助新手

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号