c++ stringstream ss()[通俗易懂]

c++ stringstream ss()[通俗易懂]定义了三个类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。本文以stringstream为主,介绍流的输入和输出操作。主要用来进行数据类型转换,由于使用string对象来代替字符数组(snprintf方式),就避免缓冲区溢出的危险;而且,因为传入参数和目标对象的类型会被自动推导出来,所以不存在错误的格式化符的问题。简单说,相比c库的数据类型转换而言,更加安全、自动和直接。一、从string对象str中读.

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

定义了三个类:istringstream、ostringstream 和 stringstream,分别用来进行流的输入、输出和输入输出操作。本文以 stringstream 为主,介绍流的输入和输出操作。

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

// swapping ostringstream objects
#include <string> // std::string
#include <iostream> // std::cout
#include <sstream> // std::stringstream

int main () { 
   

  std::stringstream ss;

  ss << 100 << ' ' << 200;

  int foo,bar;
  ss >> foo >> bar;

  std::cout << "foo: " << foo << '\n';
  std::cout << "bar: " << bar << '\n';

  return 0;
}
 Edit & Run

Output:
foo: 100
bar: 200

一、从string对象str中读取字符。遇空格结束

下面代码增加while循环,能将str全部单词打印出来

#include <iostream>
#include <sstream>

using namespace std;

int main()
{ 
   
	string str = "hello world";
	cout << str << endl;
	
	stringstream ss(str); //将str复制到ss
	string abc;
	while(ss >> abc) //相当于输入一个个的单词
	{ 
   
		cout << abc <<endl;
	}

	return 0;
}

OUTPUT:
在这里插入图片描述
二、支持C风格的串流的输入输出操作

#include <iostream>
#include <sstream>

using namespace std;

int main()
{ 
   
	int num = 1000;
	string str;
	stringstream ss; //将str复制到ss
	ss << num;
	ss >> str;
	ss.clear();//使用stringstream来做转换时,最好使用完,进行ss.clear()操作
	cout << str << endl;
	cout << str.c_str() << endl;
	return 0;
}

OUTPUT:
在这里插入图片描述

三、字符的拼接
在这里插入图片描述

本文作者:WeSiGJ

参考链接(包括但不限于):
https://blog.csdn.net/liitdar/article/details/82598039
https://blog.csdn.net/weierqiuba/article/details/66473060
https://blog.csdn.net/xw20084898/article/details/21939811
http://www.cplusplus.com/reference/sstream/stringstream/stringstream/

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

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

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


相关推荐

  • oracle 解锁表

    oracle 解锁表操作的前提用sys用户以SYSDBA角色登录第一种解锁方式1.查询被锁的表selectobject_name,machine,s.sid,s.serial#fromv$locked_objectl,dba_objectso,v$sessionswherel.object_id = o.object_idandl.session_id=s.sid;2.查询…

    2022年6月15日
    31
  • 最炫python表白代码_有趣的python代码表白

    最炫python表白代码_有趣的python代码表白文章目录前言演示网站制作部署网站二维码制作总结前言跟着我做,不要跳着看,否则你会失败。第一步是制作二维码;第二步是制作网站。演示具体成果地址:https://yanghanwen.xyz/ai/网站制作首先你需要下载我的这个完整项目:链接:https://pan.baidu.com/s/1EmRehx_gRnT5hLjJvKuAIg提取码:pz1y–来自百度网盘超级会员V2的分享下载好后文件目录如下:然后你需要注意的是我把img里面的图片删了,涉及隐私,大家自己替换自己追

    2022年8月30日
    6
  • IntelliJ IDEA输出打印System.out.println()的快捷键[通俗易懂]

    IntelliJ IDEA输出打印System.out.println()的快捷键[通俗易懂]在eclipse中习惯了使用syso,开始用idea很不习惯。在idea中直接输入sout,自动出现提示,不像eclipse中那样还要alt+/,这算是idea的一个优点了。sout看图:按Tab或Enter都可以出现…

    2022年10月2日
    4
  • 用递归实现斐波那契数列 python_python斐波那契数列前30项

    用递归实现斐波那契数列 python_python斐波那契数列前30项文章目录一,递归方法: 二,斐波那契数列简介: 特性一: 特性二: 两种方法运行时间对比: /一,递归方法:/递归方法为:将问题一步步分解,直到得到可以解决的简单问题。通常涉及直接或间接条用自身:例如计算列表(1,3,5,7,9,13)中各元素的和。直接或间接调用sum()函数自身:python实现如下:In[1]deflistsum(a):iflen(a)==1:r…

    2025年8月26日
    7
  • python中int的取值范围_int32的取值范围是多少?

    python中int的取值范围_int32的取值范围是多少?int32的数值取值范围为“-2147483648”到“2147483647”;而int64的数值取值范围为“-9223372036854775808”到“9223372036854775808”。int32的取值范围计算机中32位int类型变量的范围,其中int类型是带符号整数。正数在计算机中表示为原码,最高位为符号位:1的原码为000000000000000000000000000…

    2022年9月15日
    1
  • characterEncodingFilter作用[通俗易懂]

    characterEncodingFilter作用[通俗易懂]characterEncoding表示编码方式,enabled表示是否启用编码,分别从初始化参数中取值。web.xml中的配置如下:如果使用的字符编码Filter、request中取出的字符可能是

    2022年7月4日
    31

发表回复

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

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