stringstream类的简介和用法

一、简介

<sstream>类库定义了三种类:istringstream,ostringstream,stringstream.分别用来进行流的输入,流的输出,输入输出操作.在此演示stringstream的使用.**stringstream最大的特点是可以很方便的实现各种数据类型的转换,不需要像C语言中转换那么麻烦,而且转换非常安全.所以stringstream经常用于方便安全的类型转换.

二、用法

(1)数据的分割(string --> string)

 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<sstream>
 4 using namespace std;
 5
 6 string str[100];
 7
 8 int main()
 9 {
10     string line;
11     int cnt = 0;
12     while (getline(cin, line))        //每次取一行
13     {
14         stringstream ss(line);        //将字符串根据空格分隔成一个个单词
15         while (ss >> str[cnt])
16         {
17             cout << str[cnt++] << " ";
18         }
19     }
20     return 0;
21 }

(2)数据的拼接

 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<sstream>
 4 using namespace std;
 5
 6 int main()
 7 {
 8     stringstream ss;
 9     int num1 = 12345;
10     int num2 = 6789;
11     string str2 = "abc";
12     string str;
13     ss << num1;
14     ss << num2;
15     ss << str2;
16     ss >> str;
17     cout << str;        //可以不同类型拼接,输出123456789abc
18
19     return 0;
20 }

(3)数据类型的转换

 1 #include<stdio.h>
 2 #include<iostream>
 3 #include<sstream>
 4 using namespace std;
 5
 6 template<class T>
 7 void Tostring(string &result, const T &t)    //用模板将各种数值转化成string类型
 8 {
 9     stringstream ss;
10     ss << t;
11     ss >> result;
12 }
13
14 int main()
15 {
16     stringstream ss;
17     string str;
18     string str2 = "1122334455a123";
19     int num1 = 12345;
20     float num2 = 3.1415926;
21     char arr[100];
22
23     Tostring(str, num2);
24     cout << str << endl;
25
26     ss.clear();
27     ss.str("");                    //在另外一篇blog有解释
28     ss << num1;
29     ss >> str;
30     cout << str << endl;        //int --> string,输出12345
31
32     ss.clear();
33     ss.str("");
34     ss << num2;
35     ss >> str;
36     cout << str << endl;        //float --> string,输出3.14159,好像小数点5位之后的会丢掉
37
38     ss.clear();
39     ss.str("");
40     ss << str2;
41     ss >> num1;                    //string --> int,输出1122334455,遇到非数字会停止
42     cout << num1 << endl;
43
44     ss.clear();
45     ss.str("");
46     ss << str2;
47     ss >> num2;                    //string --> float,输出1122334455,遇到非数字也会停止
48     cout << num1 << endl;
49
50     ss.clear();
51     ss.str("");
52     ss << str2;
53     ss >> arr;                    //string --> char*,输出1 3,转换成其他类型数组不行
54     cout << arr[0] <<" "<< arr[5] << endl;
55
56     return 0;
57 }

原文地址:https://www.cnblogs.com/lfri/p/9363401.html

时间: 2024-09-26 23:30:09

stringstream类的简介和用法的相关文章

CSS中伪类及伪元素用法详解

原文:CSS中伪类及伪元素用法详解 伪类的分类及作用: 注:该表引自W3School教程 伪元素的分类及作用: 接下来让博主通过一些生动的实例(之前的作业或小作品)来说明几种常用伪类的用法和效果,其他的读者可以自己尝试: :active  大致效果为用鼠标点击时,元素增加特效,鼠标松开时,特效消失.多用在按钮的点击上. 写法: 这里id为box的是一div块,在css中首先设置了他的基本样式,下面为加入:active伪类后需要修改的样式. 未点击时: 点击之后: :active.:hover.:

locate简介及用法

简介 locate命令用于查找文件,Locate可以很快速的搜寻档案系统内是否有指定的档案.其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找时就只需查询这个数据库,而不必实际深入档案系统之中了.所以它需要一个数据库(默认:slocate.db),一个配置文件(updatedb.conf),一个crontab(定时执行) 先运行updatedb, 可直接命令执行,也可以放在crontab里面执行 然后在生成的/var/lib/slocate/slocate.db数据库中查找. 所

php nusoap类的使用、用法、出错 及说明

NuSOAP 是 PHP 环境下的 WEB 服务编程工具,用于创建或调用 WEB 服务它是一个开源软件,当前版本是 0.7.2 ,支 持 SOAP1.1 WSDL1.1 ,可以与其他支持 SOAP1.1 和 WSDL1.1 的系统互操作 NuSOAP 完全由PHP语言编写,由一 系列 PHP 类组成,不需要扩展库的支持,这种特性使得 NuSOAP 可以用于所有的 PHP 环境,不受服务器安全设置的影响 1. NuSOAP 的获取和安装NuSOAP 项目建立在 SourceForge 上,网络地址

java定时任务类Timer和TimerTask用法详解

原文:java定时任务类Timer和TimerTask用法详解 代码下载地址:http://www.zuidaima.com/share/1550463277550592.htm package com.zuidaima.util; import java.io.IOException; import java.util.Timer; import test.MyTask; /* * 本类给出了使用Timer和TimerTaske的主要方法,其中包括定制任务,添加任务 * 退出任务,退出定时器.

istringstream、ostringstream、stringstream 类介绍 .

istringstream.ostringstream.stringstream 类介绍 . 转自:http://www.cnblogs.com/gamesky/archive/2013/01/09/2852356.html 0.C++的输入输出分为三种: (1)基于控制台的I/O (2)基于文件的I/O (3)基于字符串的I/O 1.头文件 [cpp] view plaincopyprint? #include <sstream> 2.作用 istringstream类用于执行C++风格的字

C++类中const的用法

C++ 类中的const用法总结: 先看一个例子: class A { public: A(int x) : num(x), b(x) {} void fun(const A& a); //const修饰函数形参 int GetNum(void) const;//const修饰不修改成员变量的函数 void SetNum(int x); A& operator=(const A& other);  //const修改成员函数的返回值和形式参数 const A operator*(c

IOS中 Block简介与用法(一)

?Block简介: Block的实际行为和Function很像,最大的差别是在可以存取同一个Scope的变量值.Block实体形式如下: ^(传入参数列){行为主体}; Block实体开头是"^",接着是由小括号所包起来的参数列(比如 int a, int b, int c),行为主体由大括号包起来,专有名字叫做block literal.行为主体可以用return回传值,类型会被compiler自动辨别.如果没有参数列要写成: ^(void). 例如下面的一个例子: [cpp] vi

C#类中static变量用法分析

本文实例讲述了C#类中static变量用法.分享给大家供大家参考.具体分析如下: 先来看一段代码: 代码如下: using System; namespace Param { class Class1 { static int i = getNum(); int j = getNum(); static int num = 1; static int getNum() { return num; } [STAThread] static void Main(string[] args) { Co

C++中用stringstream类进行数据类型的转换

我们在进行C++编程过程中,经常需要进行数据类型的转换. stringstream 类的作用就是进行数据类型转换.要想在程序中使用 stringstream 类,我们需要在源程序文件中包含头文件include<sstream> 接下来就看看如何利用stringstream类进行数据类型转换: 1.首先引入头文件include<sstream>; 2.定义stringstream对象  stream: 3.使用运算符号"<<" 向对象stream中传值