C++/MFC 常用数据类型转换

参考网上的资料,自己整理的常用类型转换函数。

头文件

#pragma once
#include <atlstr.h>
#include <string>

/************************************************************************/
/* 常用类型转换                                                          */
/************************************************************************/
std::string CString2String(const CString& strVal);
CString String2CString(const std::string& strVal);
int String2Int(const std::string& strVal);
std::string Int2String(int nVal);
double String2Double(const std::string& strVal);
std::string Double2String(double nVal);
float String2Float(const std::string& strVal);
std::string Float2String(float nVal);

int CString2Int(const CString& strVal);
CString Int2CString(int nVal);
double CString2Double(const CString& strVal);
CString Double2CString(double nVal);
float CString2Float(const CString& strVal);
CString Float2CString(float nVal);

实现文件

#include "stdafx.h"
#include "TypeConvert.h"
#include <iostream>
#include <sstream>

std::string CString2String( const CString& strVal )
{
	std::string strResult = CT2A(LPCTSTR(strVal));
	return strResult;
}

CString String2CString( const std::string& strVal )
{
	CString strResult = CA2T(strVal.c_str());
	return strResult;
}

int String2Int( const std::string& strVal )
{
	return atoi(strVal.c_str());
}

std::string Int2String( int nVal )
{
	std::stringstream stream;
	stream<<nVal;
	std::string strResult;
	stream>>strResult;
	return strResult;
}

double String2Double( const std::string& strVal )
{
	// atof函数中的f代表的实际是double
	return atof(strVal.c_str());
}

std::string Double2String( double nVal )
{
	std::stringstream stream;
	stream<<nVal;

	std::string strResult;
	stream>>strResult;
	return strResult;
}

float String2Float( const std::string& strVal )
{
	std::stringstream stream;
	stream<<strVal;

	float nResult;
	stream>>nResult;
	return nResult;
}

std::string Float2String( float nVal )
{
	char szValue[1024];
	memset(szValue, 0, 1024);
	sprintf_s(szValue,"%.2f", nVal);
	return std::string(szValue);
}

int CString2Int( const CString& strVal )
{
	// 先转std::string
	std::string strTemp = CT2A((LPCTSTR)strVal);
	return atoi(strTemp.c_str());
}

CString Int2CString( int nVal )
{
	CString strValue;
	strValue.Format(_T("%d"), nVal);
	return strValue;
}

double CString2Double( const CString& strVal )
{
	std::string strTemp = CT2A((LPCTSTR)strVal);
	return atof(strTemp.c_str());
}

CString Double2CString( double nVal )
{
	CString strValue;
	strValue.Format(_T("%lf"), nVal);
	return strValue;
}

float CString2Float( const CString& strVal )
{
	// 先转std::string
	std::string strTemp = CT2A((LPCTSTR)strVal);
	return String2Float(strTemp);
}

CString Float2CString( float nVal )
{
	CString strValue;
	strValue.Format(_T("%f"), nVal);
	return strValue;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值