stringstream类用法

2024-02-20 20:08
文章标签 用法 stringstream

本文主要是介绍stringstream类用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!



本文转自:http://blog.csdn.net/nwpu_yike/article/details/22100615

C++ stringstream 类的用法


功能一:预定的格式将程序中的数据保存在一个string 中





C++ stringstream 类是一种十分有用的类,特别是当我们需要在程序中使用字符串和数字数据的时候。要想在程序中使用 stringstream 类,我们需要在源程序文件中包含头文件include<sstream>。stringstream 对象的使用方法与cout对象的使用方法基本相同。stringstream 类提供的函数,将数字化转化为字符串。

当我们需要按预定的格式将程序中的数据保存在一个string 中的时候,可以先创建一个stringstream 对象,并通过运算符 ”<<“ 将数据传递给 stringstream 对象。(这与通过”<<“ 使用cout 对象的方法相同。)接着,我们可以通过调用stringstream 类的函数str() 将对象所包含的内容赋给一个string对象。在一下的程序中,我们先将数据传递给一个stringstream 对象,然后通过该 stringstream 对象将数值赋给一个string 对象。住:cout能使用的所有ios格式标记也可以在stringstream 对象中使用。

[C++] view plain copy print ?
  1. // 如何使用 stringstream   
  2. // 对象生成格式化的 string  
  3.   
  4. #include <iostream>  
  5. #include <string>  
  6. #include <sstream>  
  7. using namespace std;  
  8.   
  9. int main()  
  10. {  
  11.     cout << "\n Welcome to the StringStream Demo program.\n";  
  12.   
  13.     // 构建一些将在string中出现的数据变量  
  14.     // PI 精确到小数点后15位  
  15.     double pi = 3.141592653589793;  
  16.     float dollar = 1.00;  
  17.     int dozen = 12;  
  18.   
  19.     string text;  
  20.   
  21.     // 我们希望tring 的格式如下:  
  22.     // dozen适12,dollar是$1.00  
  23.     // 精确到小数点后10为pi是3.141592653589793  
  24.   
  25.     // 生成stringstream 对象  
  26.     stringstream ss;  
  27.       
  28.     // 现在像使用cout一样使用ss  
  29.   
  30.     ss << " A dozen is "<< dozen << ", a dollar is $ ";  
  31.     ss.setf(ios::fixed);  
  32.     ss.precision(2);  
  33.     ss << dollar << " and \n the value of pi to 10 places is ";  
  34.     ss.precision(10);  
  35.     ss << pi << ".";  
  36.   
  37.     // 现在将ss中的内容赋给一个string对象  
  38.     // 使用str()函数  
  39.   
  40.     text = ss.str();  
  41.     cout << "\nHere is our formatted text string:\n" << text << endl;  
  42.     // 再加入一些信息  
  43.     ss << "\ There are 2 \"+\" in C++.";  
  44.     text = ss.str();  
  45.     cout<< "\nHere is the final string:\n" << text << endl;  
  46.     return 0;  
  47. }  

运行结果图:



功能二:实现类型转换




string到 int / double 的转换

[C++] view plain copy print ?
  1. #include <iostream>  
  2. #include <string>  
  3. #include <sstream>  
  4. using namespace std;  
  5.   
  6. int main()  
  7. {  
  8.     double  rb;    
  9.     int     ri;     // 存储结果  
  10.     string  s;      // 要转化的字符串  
  11.     stringstream ss;  
  12.     s = "123.456789";  
  13.     ss << s;         // 类似 cout  
  14.     ss >> rb;        // 类似 cin  
  15.     cout.precision(10);  
  16.     cout << "string \""<< s << "\" to double object "   
  17.         << rb << endl;  
  18.     s = "654321";  
  19.     ss.clear();      //清空流  
  20.     ss << s;  
  21.     ss >> ri;  
  22.     cout << "string \""<< s << "\" to int object "   
  23.         << ri << endl;  
  24.     return 0;  
  25. }  

运行结果图:



功能三:实现任意类型转换






该功能没多少实际意义,不如static_cast 来的简单。

[C++] view plain copy print ?
  1. #include <iostream>  
  2. #include <string>  
  3. #include <sstream>  
  4. using namespace std;  
  5. template <class t1="" class="" t2="">  
  6.   
  7. int main()  
  8. {  
  9.     double  sb = 123.456;    
  10.     int     ri;     // 存储结果  
  11.     stringstream ss;  
  12.     ss << sb;  
  13.     ss >> ri;  
  14.     cout << ri;  
  15.     return 0;  
  16. }  



这篇关于stringstream类用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/729402

相关文章

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

Java序列化之serialVersionUID的用法解读

《Java序列化之serialVersionUID的用法解读》Java序列化之serialVersionUID:本文介绍了Java对象的序列化和反序列化过程,强调了serialVersionUID的作... 目录JavChina编程a序列化之serialVersionUID什么是序列化为什么要序列化serialV

python3中正则表达式处理函数用法总结

《python3中正则表达式处理函数用法总结》Python中的正则表达式是一个强大的文本处理工具,用于匹配、查找、替换等操作,在Python中正则表达式的操作主要通过内置的re模块来实现,这篇文章主要... 目录前言re.match函数re.search方法re.match 与 re.search的区别检索

MySQL 中的 JSON_CONTAIN用法示例详解

《MySQL中的JSON_CONTAIN用法示例详解》JSON_CONTAINS函数用于检查一个JSON文档中是否包含另一个JSON文档,这篇文章给大家介绍JSON_CONTAINS的用法、语法、... 目录深入了解 mysql 中的 jsON_CONTAINS1. JSON_CONTAINS 函数的概述2

JDK21对虚拟线程的几种用法实践指南

《JDK21对虚拟线程的几种用法实践指南》虚拟线程是Java中的一种轻量级线程,由JVM管理,特别适合于I/O密集型任务,:本文主要介绍JDK21对虚拟线程的几种用法,文中通过代码介绍的非常详细,... 目录一、参考官方文档二、什么是虚拟线程三、几种用法1、Thread.ofVirtual().start(

Java8 Collectors.toMap() 的两种用法

《Java8Collectors.toMap()的两种用法》Collectors.toMap():JDK8中提供,用于将Stream流转换为Map,本文给大家介绍Java8Collector... 目录一、简单介绍用法1:根据某一属性,对对象的实例或属性做映射用法2:根据某一属性,对对象集合进行去重二、Du

Python中isinstance()函数原理解释及详细用法示例

《Python中isinstance()函数原理解释及详细用法示例》isinstance()是Python内置的一个非常有用的函数,用于检查一个对象是否属于指定的类型或类型元组中的某一个类型,它是Py... 目录python中isinstance()函数原理解释及详细用法指南一、isinstance()函数

Python中的sort方法、sorted函数与lambda表达式及用法详解

《Python中的sort方法、sorted函数与lambda表达式及用法详解》文章对比了Python中list.sort()与sorted()函数的区别,指出sort()原地排序返回None,sor... 目录1. sort()方法1.1 sort()方法1.2 基本语法和参数A. reverse参数B.

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

Java Instrumentation从概念到基本用法详解

《JavaInstrumentation从概念到基本用法详解》JavaInstrumentation是java.lang.instrument包提供的API,允许开发者在类被JVM加载时对其进行修改... 目录一、什么是 Java Instrumentation主要用途二、核心概念1. Java Agent