在开发的过程中,最常用到的类应该就是字符串操作类了吧,自然免不了要进行转换,比如经常用到的 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(); //返回转换后的字符
}
}
}
#endif2.使用方法(我当前是在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 文件夹中。
本站部分资源收集于网络,纯个人收藏,无商业用途,如有侵权请及时告知!