扩展C++ string类

本文介绍了在C++开发中,为解决标准string类的局限,作者扩展了string类,增加了数字转换和字符串格式化等功能。提供了一个名为exstring的头文件供读者参考和进一步扩展。
摘要由CSDN通过智能技术生成

在实际开发过程中,C++string类使用起来有很多不方便的地方,笔者根据根据这些不足简单的扩展了这个类,如增加与数字之间的相互转化和格式化字符串。不足的地方望指正。读者也可以根据自己需求继续扩展。

头文件:exstring.h

/*
Author: wuqiang
Email:	debugroot@126.com
Description:exstring is a subclass of basic_string.It is added some userful 
operations,such as toUpper,toLower,toNumber,fromNumber,format,etc.It can also
convert between basic_string seamlessly,which is very important for compatibility.
And it is almostly a wrapper of some C++ standard library,so there should be no bugs.
If you find some,please let me known.It is totally free,you can use it in any way you desire.
*/
#pragma once

#include <string>
#include <stdarg.h>
#include <algorithm>
#include <sstream>
#include <iomanip>

using namespace std;

#ifndef INLINE
#define INLINE inline
#endif //INLINE

static ios_base::fmtflags BaseFlag(int base)
{
	return (base == 16) ? (ios_base::hex) : 
		( (base == 8) ? (ios_base::oct) : (ios_base::dec) );
}

template<class _Elem> struct ex_char_traits
{
};

template<> struct ex_char_traits<char>
{
	static INLINE int ct_vscprintf(const char* format, va_list argptr ) 
	{ 
		return _vscprintf(format, argptr);
	}
	static INLINE int ct_vstprintf_s(char* buffer, size_t numberOfElements,
		const char* format,  va_list argptr) 
	{ 
		return vsprintf_s(buffer, numberOfElements, format, argptr); 
	}
};

template<> struct ex_char_traits<wchar_t>
{
	static INLINE int ct_vscprintf(const wchar_t* format, va_list argptr ) 
	{ 
		return _vscwprintf(format, argptr);
	}
	static INLINE int ct_vstprintf_s(wchar_t* buffer, size_t numberOfElements,
		const wchar_t* format,  va_list argptr) 
	{ 
		return vswprintf_s(buffer, numberOfElements, format, argptr); 
	}
};

template<class _Elem, class _Traits, class _Ax, class Type>
Type ConvertToNumber(basic_stringstream<_Elem, _Traits, _Ax>& ss, 
					 Type t, int base)
{
	ss.setf(BaseFlag(base), ios_base::basefield);
	ss >>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值