Unicode下字符串與整型等的格式轉換

本文详细介绍了在Unicode环境下,如何在C++中进行字符串(CString)与整型(int、long)、浮点型(double)之间的相互转换。同时,提供了宽字符与ANSI字符串之间的转换方法,以及在Unicode环境中字符串操作的建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Unicode下字符串與整型等的格式轉換【轉】

2013年10月01日 ⁄ 綜合 ⁄ 共 1329字 ⁄ 字號 小 中 大 ⁄ 評論關閉

Unicode下字符串與整型等的格式轉換

一、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 );  

 或

double i   = _wtof( 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

转载:https://www.xuebuyuan.com/zh-hant/1090675.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值