C++stringstream的简单介绍以及使用

2023-11-15

在C语言中,如果想要将一个整形变量的数据转化为字符串格式可以使用以下两种方式:
1.itoa()函数。2sprint()函数。

但是两个函数在转化时,都得需要先给出保存结果的空间,那空间要给多大呢,就不太好界定,而且转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃。

int main()
{
int n = 123456789;
char s1[32];
_itoa(n, s1, 10);

char s2[32];
sprintf(s2, "%d", n);

char s3[32];
sprintf(s3, "%f", n);
return 0;
} 

stringstream

在C++中,可以使用stringstream类对象来避开此问题;
头文件:

#include<sstream> 

在该头文件下,标准库三个类:istringstream、ostringstream 和 stringstream,分别用来进行流的输入、输出和输入输出操作,本次主要使用stringstream 。

stringstream主要可以用来

1.将数值类型数据格式化为字符串

#include<sstream>
int main()
{
int a = 12345678;
string sa;
// 将一个整形变量转化为字符串,存储到string类对象中
stringstream s;
s << a;
s >> sa;

s.clear(); // 清空s, 不清空会转化失败
double d = 12.34;
s << d;
s >> sa;

string sValue;
sValue = s.str(); // str()方法:返回stringsteam中管理的string类型
cout << sValue << endl;
return 0;
} 

2. 字符串拼接

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

注意:

  1. stringstream实际是在其底层维护了一个string类型的对象用来保存结果。
  2. 多次数据类型转化时,一定要用clear()来清空,才能正确转化,但clear()不会将stringstream底层的string对象清空。
  3. 可以使用s. str("")方法将底层string对象设置为""空字符串。
  4. 可以使用s.str()将让stringstream返回其底层的string对象。
  5. stringstream使用string类对象代替字符数组,可以避免缓冲区溢出的危险,而且其会对参数类型进行推演,不需要格式化控制,也不会出现格式化失败的风险,因此使用更方便,更安全。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++stringstream的简单介绍以及使用 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写

随机推荐

  • C++栈区、堆区、全局静态区、代码区的介绍

    示例代码 include
  • elasticsearch 配置 之 discovery.zen.ping.unicast.hosts

    discovery zen ping unicast hosts 192 168 1 12 192 168 1 12 9201 192 168 1 12 9202 192 168 1 13 192 168 1 14 注 端口非9200的节点
  • C语言的运算符及优先级

    C语言的运算符包括单目运算符 双目运算符 三目运算符 优先级如下 第1优先级 各种括括号 如 等 成员运算符 第2优先级 所有单目运算符 如 等 第3优先级 算数运算符 乘法运算符 除法运算符 求余运算符 第4优先级 算数运算符 加法运算符
  • githubC++ 技术方向基础知识总结

    简介 面向 C C 技术方向校招求职者 初学者的基础知识总结 包括语言 程序库 数据结构 算法 系统 网络 链接装载库等知识及面试经验 招聘 内推等信息 github 传送门
  • spring学习笔记(十二)Spring注入内部Bean

    Java 中在类内部定义的类称为内部类 同理在 Bean 中定义的 Bean 称为内部 Bean 注入内部 Bean 使用
  • 带你深入了解NPM——NPM初学者指南

    前段时间 我们邀请了我们 城内 葡萄城 资深开发工程师刘涛为大家分享了一次干货满满的关于Electron线上公开课 在课程过程中有不少同学对于NPM的概念和用法有一些疑问 所以这次我们希望通过这篇文章来解答各位同学的问题 另外在介绍的基础上
  • 2021-11-09

    今天是我写博客的第一天 在这里我想先说一说的对于C语言的看法以及我对于我自己的看法 开通这个博客 最主要的是为了记录我对于C语言学习的不断进步过程以及积累过程 我深知想要学好一门一门新的学科是很艰难的 但是我也知道C语言对于现代发展又是及其
  • uniapp 使用echarts

    uniapp 如何使用 echarts 图标 1 引入 文件 主要这三个文件 2 在使用到的页面 注册使用 3 html 结构 ec 对应绑定的是 data 中的 ec 效果图 全部代码
  • STM32 RT-Thread 系统分析(3)-线程管理之线程切换(系统移植基础篇二)

    线程管理之线程切换 前言 基本信息 前言说明 rt hw context switch to 函数 关键代码分析 还原MSP值 复位序列 LDR r0 SCB VTOR LDR r0 r0 startup stm32f103xg S文件内容
  • 面向对象的设计思想

    面向对象的设计思想 OO思想 Object Oriented 1 看到一个需求的时候不应该直接写代码 应该先考虑有哪些类 2 考虑类的时候 类一定是一类事务的描述 不能太局限 3 考虑类的时候需要考虑主要的类 也就是需要和业务 动作 事件紧
  • 编写程序,对输入的一个整数,按相反顺序输出该数。例如,输入为 3578, 输出为 8753。...

    编写程序 对输入的一个整数 按相反顺序输出该数 例如 输入为 3578 输出为 8753 package HomeWork08 import java util Scanner public class HomeWork08 public
  • NIFI使用InvokeHTTP发送http请求

    说明 这里介绍四种平时常用的http请求方法 GET POST PUT DELETE 在官方的介绍文档中关于InvokeHTTP处理器的描述是这么说的 An HTTP client processor which can interact
  • HDU - 1020 Encoding

    Given a string containing only A Z we could encode it using the following method Each sub string containing k same chara
  • IDEA 安装插件IDE Eval Reset

    IDE Eval Reset是什么 idea eval reset是Jetbrains的插件 官方良心产品 会允许我们试用30天 可以借此重新刷新idea正版程序的使用期限 哈哈哈 爽到没朋友 具体操作 1 点击intelliJ IDEA
  • [开源协议]58种开源协议及分类

    转载自 http www opensource org licenses alphabetical 更多关于具体协议内容请看其链接 Licenses that are popular and widely used or with stro
  • Linux、Ubuntu下安装yaml, 关于Import Error: No module named yaml

    pip install pyyaml 如果不行的话 就 conda install yaml 最后 gt gt gt import yaml 没有报错就成功了
  • mingw64镜像网站

    mingw64镜像网站 http files 1f0 de mingw
  • UIBOT的简单使用

    最近项目上使用到一个新的技术软件 刚一阶段使用结束 用来记录下 首先我们了解下UIbot 这里我直接放上下载社区版本的官方地址 来也科技RPA AI智能自动化平台 助力政企实现智能时代的人机协同 首先需要用邮箱注册 然后直接安装社区版本 这
  • 【毕设教程】FCM模糊聚类算法

    文章目录 0 前言 1 如何理解模糊聚类 2 模糊C means聚类算法 3 FCM算法原理 4 Python FCM支持 4 1 安装相关库 4 2 skfuzzy cmeans函数说明 4 3 代码实现 4 4 运行结果 5 FCM算法
  • C++stringstream的简单介绍以及使用

    在C语言中 如果想要将一个整形变量的数据转化为字符串格式可以使用以下两种方式 1 itoa 函数 2sprint 函数 但是两个函数在转化时 都得需要先给出保存结果的空间 那空间要给多大呢 就不太好界定 而且转化格式不匹配时 可能还会得到错