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


    转载自:https://blog.csdn.net/liitdar/article/details/82598039

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

    <sstream> 定义了三个类:istringstream、ostringstream 和 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;
    }

    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;
    }

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

        可以使用 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# 中实现累加校验和计算
    勇哥发布的B站视频,包含视觉、运动控制、机器人、C#开发,干货满满,推荐搞工控行业的朋友观看
    Windows Server 2012无法安装 .NET3.5安装角色或功能失败,找不到源文件
    cdh6.3 hive2.1.1升级hive2.3.8
    年少轻狂诗——送给所有年轻人和中年人
    git提交到代码到远程仓库,合并分支提示entirely different commit histories(备忘)
    工作日统计工具(python)
    ansible优质 网站
    Django生产环境静态资源404问题
    基于ansible二次开发
  • 原文地址:https://www.cnblogs.com/zhongllmm/p/16018883.html
Copyright © 2020-2023  润新知