CString转换

一、int等 转 CString

int i;

CString msg= _T("");

msg.Format( _T("%d"), i);

同理对于long、double、char等适用.注意:必须适用_T()函数。

二、CString 转 int

CString msg = _T("123");

int i = _ttoi( msg );

三、CString 转 long

CString msg = _T("123");

long i = _tcstol( msg , 0 , 10 );

使用_tcstoul()或者_tcstol(),它们都能把字符串转化成任意进制的长整数(如二进制、八进制、十进制或十六进制),不同点在于前者转化后的数据是无符号的(unsigned),而后者相反。

四、CString 转 double

CString msg = _T("123");

double i = _tcstod( msg , 0 );


其他,

// 把宽字符转化为ANSI字符串
WideCharToMultiByte( CP_ACP, 0, lpcwStr, -1, lpStr, sizeof(lpStr), NULL, NULL );

// 把ANSI字符串转化为宽字符
MultiByteToWideChar( CP_ACP, 0, lpcStr, -1, lpwStr, sizeof(lpwStr) );

为支持Unicode做准备,除个别必须使用 char 或 char* 的地方外,
其它地方请依照如下标准:

1.字符串类型尽量用CString
2.字符类型使用 TCHAR
3.字符串数组用 TCHAR[]
4.字符串指针用 TCHAR*
5.常量字符串指针用 const TCHAR*
6.字符串常量和字符常量加宏 _T

特别的:
1>CString::Format(_T("..."),...)//要加_T
2>LPTSTR 等等被多次嵌套定义过的宏尽量少用,用基础类型 const TCHAR*(或TCHAR*)替代;
3>为TCHAR*类型指针分配 N-1 个字符的空间: TCHAR* pbuffer = new TCHAR[ N*sizeof(TCHAR) ];

常用字符串函数,须使用支持Unicode/Ansi的宏函数替换前者:

Ansi字符串函数 Unicode/Ansi宏函数 功能说明
strcpy _tcscpy 字符串拷贝
strcat _tcscat 字符串连接
strlen _tcslen 求字符串长度
strcmp _tcscmp 字符串比较
atof _tcstod (注) 字符串转换为double
atoi _ttoi 字符串转换为int
注:上表中 _tcstod 和 atof用法不同,不能直接替换。

LPCTSTR 使用 UELPCTSTR 代替
std::string 使用 UeStdString 代替

这个需要加ShareHeader.h头文件
#ifdef UNICODE
typedef std::wstring UeStdString;
#define UELPCSTR LPCWSTR
#else
typedef std::string UeStdString;
#define UELPCSTR LPCTSTR
#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值