在开发的过程中,最常用到的类应该就是字符串操作类了吧,自然免不了要进行转换,比如经常用到的 int转string,float转string,double转string等等。为了方便以后使用,这里使用函数模板及流的方式做成模板函数,方便了以后的复用。
1.函数实现
/******************************************************************* * 作者: 他小的有 * 时间: 2016年6月23日19:51:52 * 描述: 将任意类型转换成字符串 * 版本: 1.3 * 邮箱: 953546459@qq.com * 博客: http://www.suchone.com * 声明:Copyright (c) 2016 by Txdy, All Rights Reserved. * * 版本说明: * 1.简化了上一版本中多个函数的问题,现在版本直接将第二个参数设为默认,减少函数数量 * 2.简化了宏命名(T2S) ******************************************************************/ #ifndef _TXDY_CONVERT_HPP_ #define _TXDY_CONVERT_HPP_ #include <string> #include <iostream> #include <sstream> namespace Txdy { namespace Convert { //窄字节,宽字节 #ifdef UNICODE #define T2S ToStringW #else #define T2S ToStringA #endif /* * 功能:任意类型转字符串,可指定精度(常用于浮点型) * 参数:@T,任意类型(模板) * @nNewFmtFlag,新格式化类型 * 返回值:字符串(窄字节) */ template<class T> std::string ToStringA(const T& t, int nNewFmtFlag = std::ios::fixed) { std::ostringstream oss; //创建一个流 oss.setf(nNewFmtFlag); //新的精度 oss<<t; //把值传递如流中 return oss.str(); //返回转换后的字符 } /* * 功能:任意类型转字符串,可指定精度(常用于浮点型) * 参数:@T,任意类型(模板) * @nNewFmtFlag,新格式化类型 * 返回值:字符串(宽字节) */ template<class T> std::wstring ToStringW(const T& t, int nNewFmtFlag = std::ios::fixed) { std::wostringstream oss; //创建一个流 oss.setf(nNewFmtFlag); //新的精度 oss<<t; //把值传递如流中 return oss.str(); //返回转换后的字符 } } } #endif
2.使用方法(我当前是在UNICODE环境下使用的)
// Convert_Example.cpp : Defines the entry point for the console application. // //描述:任意类型转字符串的例子,通过模板和流实现 #include "stdafx.h" #include "./Core/Convert.hpp" //使用转化命名空间 using namespace Txdy::Convert; int _tmain(int argc, _TCHAR* argv[]) { //i -> string int i = 1234567890; std::wstring str = T2S(i); //float -> string float f = 123.456f; str = T2S(f); //double -> string double d = 1234.56789; str = T2S(d); //指定保留的小数位,保留两位小数 str = T2S(d, 2); return 0; }
像这样之后,以后无论到哪里使用,拷贝一个头文件件进去就可以了,像什么之前格式类导致程序闪退的这种现象也不会存在了,一劳永逸。
顺便说了一下,为了防止与其它人的函数产生冲突,使用命名空间Txdy::Convert,如果项目不大,产生命名冲突的可能性较小,在实际使用的过程中可以 using namespace Txdy::Convert减少代码量。
更新说明:
1.1 新增Convert命名空间。
1.2 新增宽字节的支持,可以时转宽字节或窄字节。
1.3 取消了没有格式化类型的函数,直接将有格式化参数的函数的第二个格式化参数设为默认值。
源码SVN地址:http://code.taobao.org/svn/Txdy_CPP/
位于该目录下的 Examples/Convert_Examle 文件夹中。
本站部分资源收集于网络,纯个人收藏,无商业用途,如有侵权请及时告知!