增强CString类(字符数值自由转换)

// 通用库
// String.h
namespace Common
{
	class CString : public string
	{
	public:
		CString();
		virtual ~CString();

		// 模版化构造函数
		template <typename T>
		CString(const T& tVal)
		{
			ostringstream oss;
			oss << tVal;
			assign(oss.str());
		}

		// 模版化类型转换(注意char*不可用)
		template <typename T>
		operator T()
		{
			T tVal;
			istringstream iss(this->c_str());
			iss >> tVal;
			return tVal;
		}

		// 重载+运算符
		template <typename T>
		CString operator +(const T& tVal)
		{
			return CString((this->c_str() + CString(tVal)));
		}

		// 重载=运算符
		template <typename T>
		CString& operator =(const T& tVal)
		{
			this->assign(CString(tVal));
			return *this;
		}

		// 重载+=运算符
		template <typename T>
		CString& operator +=(const T& tVal)
		{
			this->append(CString(tVal));
			return *this;
		}

		// 重载<<运算符
		template <typename T>
		CString& operator <<(const T& tVal)
		{
			this->append(CString(tVal));
			return *this;
		}

		// 重载<<运算符
		template <typename T>
		CString& operator >>(T& tVal)
		{
			istringstream iss(this->c_str());
			iss >> tVal;
			return *this;
		}

		// 格式化字符串
		CString& Format(const char* pFormat, ...);

		// 转换为大写
		CString& Toupper();

		// 转换为小写
		CString& Tolower();
	};

	// 转换为char*类型
	template<> CString::operator char*();
	// 转换为const char*类型
	template<> CString::operator const char*();
}


// String.cpp
namespace Common
{
	CString::CString()
	{
		//ctor
	}

	CString::~CString()
	{
		//dtor
	}

	// 转换为char*类型
	template <>
	CString::operator char*()
	{
		return (char*)this->c_str();
	}

	// 转换为const char*类型
	template <>
	CString::operator const char*()
	{
		return this->c_str();
	}

	// 格式化字符串
	CString& CString::Format(const char* pFormat, ...)
	{
		char* pBuff = NULL;
		va_list params;

		pBuff = new char[MAX_FORMAT_SIZE];
		memset(pBuff, 0, MAX_FORMAT_SIZE);
		va_start(params, pFormat);
		vsnprintf(pBuff, MAX_FORMAT_SIZE, pFormat, params);
		va_end(params);
		this->assign(pBuff);
		delete[] pBuff;

		return *this;
	}

	// 转换为大写
	CString& CString::Toupper()
	{
		transform(this->begin(), this->end(), this->begin(), ::toupper);
		return *this;
	}

	// 转换为小写
	CString& CString::Tolower()
	{
		transform(this->begin(), this->end(), this->begin(), ::tolower);
		return *this;
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值