关闭

MFC中,Unicode和多字节字符集下 CString和char的转化

标签: mfc
128人阅读 评论(0) 收藏 举报
分类:

博主在MFC初期是遇到了一个初学MFC的人很多都会遇到的一个基本问题:就是Unicode或多字节字符集下CString和Char的转化问题。其实这种问题解决的方式很简单,两种基本形式记住即可:

1.unicode下,转换字符串形式为_T("HelloWorld");

2.MBCS下,转换字符串的形式为"HelloWorld"

 

 

多字节字符集 (MBCS) 是一种替代 Unicode以支持无法用单字节表示的字符集(如日文和中文)的方法。为国际市场编程时应考虑使用 Unicode 或MBCS,或使程序能够通过更改开关来生成支持两种字符集之一的程序。

最常见的 MBCS 实现是双字节字符集 (DBCS)。一般来说,Visual C++(尤其是 MFC)完全支持DBCS。

有关示例,请参见 MFC 源代码文件。

对于语言使用大字符集的市场所使用的平台,代替 Unicode 的最佳方法是 MBCS。MFC 通过使用可国际化的数据类型和 C运行时函数来支持 MBCS。您也应在自己的代码中这样操作。

在 MBCS下,字符被编码为单字节或双字节。在双字节字符中,第一个字节(即前导字节)表示它和下一个字节将被解释为一个字符。第一个字节来自留作前导字节的代码范围。哪个范围的字节可以用作前导字节取决于所使用的代码页。例如,日文代码页932 使用 0x81 到 0x9F 范围内的字节作为前导字节,而朝鲜语代码页 949 则使用其他范围的字节。

 

 

MFC中,Unicode和多字节字符集下 CString和char的转化

unicode下

得到CString的长度
CString strtest=_T("caoeeks");
wcslen(strtest);
wcslen(_T("123"));

多字节字符集下
strlen(CString str);

CString转TCHAR
CString str = "aklsdjf ";
TCHAR* tch = (LPTSTR)(LPCTSTR)str;

lstrcpy(data, abc);
sprintf(data, "%s ", (LPCTSTR) abc);
sprintf(data, abc);


char* 和 cstring的转换

char * charP;
CString strP;
(1)char* -> cstring
strP = CString(charP)

(2)cstring -> char*
WideCharToMultiByte(CP_OEMCP,0,(LPCTSTR)strP,-1,charP,260,0,false);

CString和 int的转换
CString strNum=...
int value =_ttoi(static_cast<LPCTSTR>(strNum));
或者
int value = _ttoi(strNum);

多字节字符集下

Cstring转化为char

转化成数组:

Cstring str=”convert”;

char char_str [512];

strncpy_s(char_str,(LPCTSTR)str_sum,sizeof(char_str));

转化成char指针:

char * ch_a =(char*)str.GetBuffer(str.GetLength());

char转化为Cstring

Cstring str;

char szBuff[2048];

str.Format("%s",szBuff);

CString 转 int :

n=atoi(str);

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

【编程拾遗】VC++中LPCTSTR、CString、char *、string之间的相互转换

字符集 在VC2012中,字符集默认采用Unicode字符集(Use Unicode Charecter Set选项),其值还可以设置为多字节字符集(Use Multi-Byte Charect...
  • JasonDing1354
  • JasonDing1354
  • 2015-01-30 14:38
  • 4676

Unicode编码下CString、char*、BSTR相互转换,char*、wchar_t*相互转换

更多精彩内容,请见:http://www.16boke.com 1、Unicode编码下CString转为char* 方法一:使用API:WideCharToMultiByte进行转换 #inclu...
  • one_in_one
  • one_in_one
  • 2014-05-20 10:30
  • 5631

LPTSTR,CString互转及字符串类操作说明

---LPTSTR 转换成 CString--- (1)直接赋值 CString strText; LPTSTR lpszText = _T("LPTSTR >> CString"); strText...
  • huwei2003
  • huwei2003
  • 2014-03-14 09:02
  • 5591

MFC中,Unicode和多字节字符集下 CString和char的转化

转载地址:http://blog.sina.com.cn/s/blog_5ebddaf8010155w4.html 博主在MFC初期是遇到了一个初学MFC的人很多都会遇到的一个基本问题:就是...
  • hjk216
  • hjk216
  • 2016-03-17 11:04
  • 205

MFC中,Unicode和多字节字符集下 CString和char的转化

1.unicode下,转换字符串形式为_T("HelloWorld"); 2.MBCS下,转换字符串的形式为"HelloWorld"     多字节字符集 (MBCS) 是一种替代 Unico...
  • xinm1001
  • xinm1001
  • 2016-10-09 21:34
  • 1026

MFC中,Unicode与多字符集下CString与char或char*等的转化

MFC中,Unicode和多字节字符集下 CString和char的转化  (2012-07-01 16:01:14) 转载▼ 标签:  杂谈 分类: V...
  • weilian_wangyu
  • weilian_wangyu
  • 2016-01-06 09:40
  • 141

VC++中字符串转换CString, char*, BSTR, 多字节,unicode字符集转换的问题

CString与LPCWSTR、LPSTR、char*、LPWSTR等类型的转换 _T的意思是通知编译器,自行进行字符串的多字节/Unicode转换。 而L表示,该字符串为Unicode版本。 h...
  • chenscmail
  • chenscmail
  • 2013-02-06 08:01
  • 7094

宽字节与单字节的转换 Unicode字符集下CString与char *转换

在Visual C++.NET2005中,默认的字符集形式是Unicode,但在VC6.0等工程中,默认的字符集形式是多字节字符集(MBCS:Multi- Byte Character Se...
  • HarbinZJU
  • HarbinZJU
  • 2011-02-22 14:11
  • 4331

【转】宽字节与单字节的转换 Unicode字符集下CString与char *转换

今天编写了一个MFC下的socket编程,这个宽字节和单字节可把我害惨了,所以这里特别转载一篇关于宽字节与单字节转换的博客。我稍微把格式改的好看一点。在Visual C++.NET2005中,默认的字...
  • maoliran
  • maoliran
  • 2016-07-24 22:14
  • 252

MFC在unicode字符集下的多字节串口调试助手

  • 2016-04-08 21:55
  • 59.58MB
  • 下载
    个人资料
    • 访问:5415次
    • 积分:110
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:24篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论