首页 > 学院 > 开发设计 > 正文

istringstream、ostringstream和stringstream

2019-11-06 08:14:44
字体:
来源:转载
供稿:网友

库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。简单起见,我主要以stringstream为中心,因为每个转换都要涉及到输入和输出操作。 注意,使用string对象来代替字符数组。这样可以避免缓冲区溢出的危险。而且,传入参数和目标对象的类型被自动推导出来,即使使用了不正确的格式化符也没有危险。

#include <sstream>#include <iostream>using namespace std;/************************************************************************//* 将任意类型转为字符串 *//************************************************************************/template<class T>void to_string(string &result , const T& t){ ostringstream oss ;//创建一个流 oss<<t ;//把值传递到流中 result = oss.str() ;//获取转换后的字符并将其写入result}/************************************************************************//* 任意类型之间的转换 *//************************************************************************/template<class T_in , class T_out>T_out convert(const T_in &t){ stringstream stream ; stream<<t ;//向流中传值 T_out result ;//这里存储转换结果 stream>>result ;//向result中写入值 return result ;}/************************************************************************//* string 转char* *//************************************************************************/char* StringToChar(const string& str){ stringstream stream ; char *resulst = new char[sizeof(str) + 1] ; stream << str ; stream >> resulst ; cout<<resulst<<endl ; return resulst ;}void main(){ string str1 ; to_string(str1 , 10.2) ; cout<<str1<<endl ; double d ; string s = "12.56" ; d = convert<string , double>(s) ; cout<<d<<endl ;}
上一篇:阿姆斯特朗数

下一篇:Windows编程

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表