(转)在VS2005/2008中字符串编码问题的解决及字符串和数值类型常用的转换方法
2011-11-26 09:47
861 查看
在VS2005/2008中,c++对字符串的处理已经默认采用了unicode版本了。Unicode可以使你的程序能够更全面的支持多国语言文字,即使在英文,日文等系统下也不会出现乱码。而且NT内核基于Unicode,可以减少了系统的编码转换开销,提高程序运行速度,并且可以支持更多的微软新推出的仅支持Unicode的API。但是有可能会造成在95/98下程序运转不正常。
写代码时应注意:
1:字符串前要加上_T或者_TEXT.比如:_T(“dadad”);
2:将char换成TCHAR (unsigned char必须去掉unsigned)
3:将str函数换成_tcs函数
4:printf函数族必须修改为wprintf,不过要注意千万不要使用wprintf函数来解析char型.
5:对于字符串和整型的转换,尽量使用_itot和_ttoi来进行相互转化,不要使用atoi或itoa。
附下表1:字符串声明类型。一般使用通用即可,让程序自动根据所设的编码进行设定。
表2:常见的字符串和其他数值类型转换方法这些方法均为通用型,也就是说可以自由的根据程序的编码方式转换为所需要的编码,编程时尽量采用这样的通用函数。
写代码时应注意:
1:字符串前要加上_T或者_TEXT.比如:_T(“dadad”);
2:将char换成TCHAR (unsigned char必须去掉unsigned)
3:将str函数换成_tcs函数
4:printf函数族必须修改为wprintf,不过要注意千万不要使用wprintf函数来解析char型.
5:对于字符串和整型的转换,尽量使用_itot和_ttoi来进行相互转化,不要使用atoi或itoa。
附下表1:字符串声明类型。一般使用通用即可,让程序自动根据所设的编码进行设定。
通用 MFC 数据类型 | 映射到 ASCII | 映射到 UNICODE | 注释 |
_TCHAR | char | wchar_t | _TCHAR 是一个映射宏,当定义 UNICODE 时,该数据类型映射到 wchar_t,如果没有定义 UNICODE,那么它映射到 char。 |
_T 或 _TEXT | char 常量字符串 | wchar_t 常量字符串 | 功能与宏相同,在 ASCII 模式下,它们被忽略,也就是说被预处理器删除掉,但是如果定义了UNICODE, 则它们会将常量字符串转换成等价的 UNICODE 。 |
LPTSTR | char*, LPSTR(Win32) | wchar_t* | 可移植的32位字符串指针。它将字符类型映射到工程设置的类型。 |
LPCTSTR | const char*, LPCSTR(Win32) | const wchar_t* | 可移植的32位常量字符串指针。它将字符类型常量映射到工程设置的类型。 |
通用方法 | 用法 |
_ecvt | Convert double to string of specified length |
_fcvt | Convert double to string with specified number of digits following decimal point |
_gcvt | Convert double number to string; store string in buffer |
_itot, _i64tot | Convert int to string |
_ltot | Convert long to string |
strtod, wcstod | Convert string to double |
strtol, wcstol | Convert string to long integer |
strtoul, wcstoul | Convert string to unsigned long integer |
atof,_wtof | Convert string to a double |
_ttoi, _ttoi64 | Convert string to int or __int64 |
_ttol | Convert string to long |
相关文章推荐
- 在VS2005/2008中字符串编码问题的解决及字符串和数值类型常用的转换方法
- 17.2015.08.04第十八节课 C#2 (数值类型及调用、引用类型及调用、装拆箱、常量、变量、数据类型转换、算术运算符、赋值运算符、关系运算符、逻辑运算符、字符串的常用方法)
- 数字类型、字符串类型常用转换,数据精度问题解决
- JSON(3):Java的Date类型转换为符合json语法的字符串遇到的问题及其解决办法
- 关于SQL Server中将数值类型转换为字符串的问题[转]
- 关于2147217913 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界 的问题解决方法
- 关于EXP-00056: 遇到 ORACLE 错误 1455 ORA-01455: 转换列溢出整数数据类型 EXP-00000: 导出终止失败 的问题解决方法整理
- 关于SQL Server中将数值类型转换为字符串的问题
- 关于SQL Server中将数值类型转换为字符串的问题
- 时间日期转换为字符串String类型及常用的方法
- 关于SQL Server中将数值类型转换为字符串的问题(转)
- 解决问题:SSIS中,列“column”无法在 unicode和非unicode字符串数据类型之间转换
- 关于SQL Server中将数值类型转换为字符串的问题
- csv 中 数值被自动转换成科学计数法 的问题 excel打开后数字用科学计数法显示且低位变0的解决方法
- IO 流读取文件时候出现乱码 文件编码格式问题 怎么转换解决方法
- 关于2147217913 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界 的问题解决方法
- SQLSERVER数据库将数值类型转换为字符串的问题
- 关于SQL Server中将数值类型转换为字符串的问题
- 解决无法在unicode和非unicode字符串数据类型之间转换的方法详解
- C#中三种方法转换字符串变成数值类型