• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 用标准c++实现string与各种类型之间的转换

用标准c++实现string与各种类型之间的转换

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c++ string类型,c++中string的用法,c++ string,c++ string类,c++ int转string等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

要实现这个目标,非stringstream类莫属。

这个类在头文件中定义, < sstream>库定义了三种类:istringstream、ostringstream和stringstream,分别用来进行流的输入、输出和输入输出操作。另外,每个类都有一个对应的宽字符集版本。

简单起见,我主要以stringstream为中心,因为每个转换都要涉及到输入和输出操作。

示例1示范怎样使用一个stringstream对象进行从 string到int类型的转换 注意,使用string对象来代替字符数组。这样可以避免缓冲区溢出的危险。而且,传入参数和目标对象的类型被自动推导出来,即使使用了不正确的格式化符也没有危险。

示例1:

string result="10000";

int n = 0;

stream << result; stream >> n;//n等于10000
</div>
int到string类型的转换

int n = 12345;

stream << n;

result =stream.str();// result等于"12345"
</div>
重复利用stringstream对象 如果你打算在多次转换中使用同一个stringstream对象,记住再每次转换前要使用clear()方法,在多次转换中重复使用同一个 stringstream(而不是每次都创建一个新的对象)对象最大的好处在于效率。stringstream对象的构造和析构函数通常是非常耗费CPU 时间的。经试验,单单使用clear()并不能清除stringstream对象的内容,仅仅是了该对象的状态,要重复使用同一个 stringstream对象,需要使用str()重新初始化该对象。

示例2:

for (int i= 1; i < 10; ++i)

{

  strsql << "insert into test_tab values(";

  strsql << i << ","<< (i+10) << ");";

   std::string str = strsql.str();// 得到string

   res = sqlite3_exec(pDB,str.c_str(),0,0, &errMsg);

  std::cout << strsql.str() << std::endl; strsql.clear();

  strsql.str("");

}
</div>
转换中使用模板 也可以轻松地定义函数模板来将一个任意的类型转换到特定的目标类型。

例如,需要将各种数字值,如int、long、double等等转换成字符串,要使用以一个string类型和一个任意值t为参数的to_string()函数。

to_string()函数将t转换为字符串并写入result中。

使用str()成员函数来获取流内部缓冲的一份拷贝:

示例3:

{ ostringstream oss;//创建一个流 oss< out_type convert(const in_value & t)

{ stringstream stream; stream<>result;//向result中写入值 return result; }
</div>
这样使用convert(): double d; string salary; string s=”12.56”; d=convert(s);//d等于12.56 salary=convert(9000.0);//salary等于”9000”

结论:在过去留下来的程序代码和纯粹的C程序中,传统的形式的转换伴随了我们很长的一段时间。但是,如文中所述,基于 stringstream的转换拥有类型安全和不会溢出这样抢眼的特性,使我们有充足得理由抛弃而使用< sstream>。

当然现在还有一个更好的选择,那就是使用boost库中的lexical_cast,它是类型安全的转换。

如下例:

 using namespace std;

using namespace boost;

int main(void)

try

{

//以下是内置类型向string转换的解决方案

//lexical_cast优势明显

int ival;

char cval;

ostringstream out_string;

string str0;

string str1;

ival = 100;

cval = 'w';

out_string << ival << " " << cval;

str0 = out_string.str();

str1 = lexical_cast(ival) + lexical_cast(cval);

cout << str0 << endl; cout << str1 << endl;

//以下是string向内置类型转换的解决方案

//几乎和stringstrem相比,lexical_cast就是类型安全的,

int itmpe;

char ctmpe;

str0 = "100k";

str1 = "100h";

istringstream in_string( str0 );

in_string >> itmpe >> ctmpe;

cout << itmpe << " " << ctmpe << endl;

itmpe = lexical_cast(str1);

ctmpe = lexical_cast(str1);

system( "PAUSE" );

return 0;

} catch(bad_lexical_cast e)

{ cout << e.what() << endl; cin.get(); }
</div>

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 用标准c++实现string与各种类型之间的转换

相关文章

  • 2017-05-28关于C语言多线程pthread库的相关函数说明
  • 2017-05-28C语言使用普通循环方法和递归求斐波那契序列示例代码
  • 2017-05-28sizeof()的简单介绍
  • 2017-05-28C++编程中的格式化输出详解
  • 2017-05-28C语言创建链表错误之通过指针参数申请动态内存实例分析
  • 2017-05-28C++在成员函数中使用STL的find_if函数实例
  • 2017-05-28使用C++程序获取新浪行情数据的方法
  • 2017-05-28C++代码规范之命名规则
  • 2017-05-28详解桶排序算法的思路及C++编程中的代码实现
  • 2017-05-28C++中可正确获取UTF-8字符长度的函数分享

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • VC++在TXT文件指定位置追加内容的方法
    • C++中运算符 &和&&、|和|| 的详解及区别
    • 哈夫曼算法构造代码
    • 动态数组C++实现方法(分享)
    • 深入解析C++编程中的运算符重载
    • 使用VC++实现打印乘法口诀表
    • 使用map实现单词转换的实例分析
    • C++实现显示MP3文件信息的方法
    • C++实现的分布式游戏服务端引擎KBEngine详解
    • c语言main函数使用及其参数介绍

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有