c++ sstream

c++ sstreamsstream定义了三个类:istringstream、ostringstream和stringstream分别用来进行流的输入、输出和输入输出操作由于sstream使用string对象代替字符数组,避免缓冲区溢出的危险;其次,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。相比c库的数据类型转换,sstream更加安全、自动和直接。1.数据类型转换#inclu…

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

sstream定义了三个类:istringstream、ostringstream和stringstream分别用来进行流的输入、输出和输入输出操作
由于sstream使用string对象代替字符数组,避免缓冲区溢出的危险;其次,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。相比c库的数据类型转换,sstream更加安全、自动和直接。

1.数据类型转换

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

输出
[cout]strResult is: 1000
[printf]strResult is: 1000

2.字符串拼接

  • 注意清空sstream的方式 sstream.str("")clear()适用于进行多次数据类型转换的场景
  • 可以使用str方法,将stringstream类型转换为string类型
  • 可以将多个字符串放入stringstream,实现字符串的拼接目的
#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;
}

输出
strResult is: first string, second string
After clear, strResult is: third string

3.stringstream的清空

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

输出
456
1

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

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/135966.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • vue删除数组中指定元素_如何删除数组中的元素

    vue删除数组中指定元素_如何删除数组中的元素vue删除数组中指定的元素exportdefault{ data(){ return{ mpList:[‘测试一’,’测试二’,’测试三’] } }, methods:{ del(item){ letlistVar=newArray for(leti=0;i<this.mpList.length;i++){ listVar.push(this.mpList) if(this.mpList[i]==item){

    2022年8月10日
    4
  • DP和HDMI区别「建议收藏」

    转自:https://www.toutiao.com/i6877677362054595080在目前市面上显示器接口中,VGA和DVI已经逐渐退出了历史舞台,Type-C还算是小众,而DP(DisplayPort)与HDMI则成为了主流产品的标配,目前的主流级显卡也是以这两个输出接口为主,而新的问题也随之诞生了:当这两个接口都可以使用的时候,选择哪个会更好?对于大部分普通的消费者来说,显示器能跟主机正常连接就行,随便哪个接口都无所谓,反正能正常使用,但是对于DIY玩家来说,这个问题就显得非常重要

    2022年4月16日
    168
  • python 去除字符串中指定字符[通俗易懂]

    python 去除字符串中指定字符[通俗易懂]python中的strip()可以去除头尾指定字符ss=’我的电话是18827038663,也是微信号,\n请加入,谢谢\n\n\n’print(ss.strip(‘\n’))结果:我的电话是18827038663,也是微信号,请加入,谢谢可以看到只能删除头尾指定字符。想要去除中间字符,可以使用replace()函数ss=’我的电话是188270386…

    2022年6月13日
    35
  • 【STM32】HAL库 STM32CubeMX教程六—-定时器中断

    【STM32】HAL库 STM32CubeMX教程六—-定时器中断前言:今天我们来学习定时器,32的定时器有着非常丰富的功能,输入捕获/输出比较,PWM,中断等等。是我们学习STM32最频繁使用到的外设之一,所以一定要掌握好,这节我们讲解定时器中断,本系列教程将对应外设原理,HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用所用工具:1、芯片:STM32F407ZET6/STM32F103ZET62、ST…

    2022年5月27日
    100
  • 特征选择方法之信息增益

    特征选择方法之信息增益

    2021年12月9日
    40
  • python nonlocal 什么意思_python nonlocal的理解使用

    python nonlocal 什么意思_python nonlocal的理解使用nonlocal 可以将一个变量声明为非本地变量 在 python 的 lru cache 看到了使用 defdecorator func a 1defwrapper args kwargs nonlocalaa 1returnfunc returnwrappe 实例中 当 a 变量是不可变类型时 因为包装函数引用了 a 装饰器执行结束 在包装函数里改变 a 的值 需要

    2025年9月4日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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