在VS2008 下 把CString转换为char*
来源:互联网 发布:python http接口测试 编辑:程序博客网 时间:2024/04/28 03:02
在VS2008下面编程的时候, 遇到必须要把CString转换为char* 的问题, 网上一搜, 答案千篇一律, 试了多个,均不行,
其中网上说的最多的两种方法:
1:
CString strSend;
strSend="abc";
char *p;
p= (char *)(LPCTSTR)strSend;
或者p=(LPSTR)(LPCTSTR)strSend;
运行结果, p只保存了 strSend的第一个字符。
2:
CString strSend;
strSend="abc";
char *p;
p=strSend.GetBuffer(0);
运行结果: 错误 1 error C2440: “=”: 无法从“wchar_t *”转换为“char *”
经过仔细搜索,在帖子发现了问题原因:http://topic.csdn.net/t/20050608/14/4068106.html#r_achor
VS c++是基于UNICODE的工程,直接转换在基于MBCS的工程可以,而在基于UNICODE的工程是不行的,CString会以UNICODE的形式来保存数据,强制类型转换只会返回第一个字符
解决方法如下:
方法一:
添加头文件#include <afxpriv.h>
CString strSend;
USES_CONVERSION;
LPSTR p = T2A(strSend); /
或者
CString strSend;
USES_CONVERSION;
char *p;
p = T2A(strSend);
因为头文件已经定于了 typed CHAR *LPSTR
(在别的论坛看到有人讲,慎用 USES_CONVERSION; 大意是多可能会导致溢出等情况,我也没看太明白,在此提醒一下,需要用到此方法的童鞋可以查阅一下)
方法二:
CString strSend;
strSend="abc";
char p[100];
int nLen = WideCharToMultiByte(CP_ACP, 0, strSend, -1, NULL, 0,NULL,NULL);
WideCharToMultiByte(CP_ACP, 0, strSend, -1, p, nLen,NULL,NULL);
WideCharToMultiByte 函数功能:映射一个unicode字符串到一个多字节字符串。
- 在VS2008 下 把CString转换为char*
- 在UICODE模式下将CString转换为char*字符串
- Unicode下CString(wchar_t)转换为 char*
- Unicode下CString(wchar_t)转换为 char*
- Unicode下CString(wchar_t)转换为 char*
- Unicode下CString(wchar_t)转换为 char*
- Unicode下CString(wchar_t)转换为 char*
- Unicode下CString(wchar_t)转换为 char*
- Unicode下CString(wchar_t)转换为 char*
- Unicode下CString(wchar_t)转换为 char*
- Unicode下CString(wchar_t)转换为 char*
- Unicode下CString(wchar_t)转换为 char*
- Unicode下CString转换为char *
- Unicode下CString(wchar_t)转换为 char*
- Unicode下CString转换为char *
- C++ Unicode下CString转换为Char*
- Unicode下CString(wchar_t)转换为 char*
- Mfc下CString转换为char *
- AspNetPager分布控件的一些设置
- 恶心的行标,动手擦掉它
- 堆排序算法及其应用
- java生成MD5校验码及算法实现
- pthread_create编译报错的解决
- 在VS2008 下 把CString转换为char*
- 中国标准城市区域码
- Linux Boot Loaders Compared
- undefined reference to `std::allocator<char>::~allocator()'
- 有了OpenMP,MPI,为什么还要MapReduce?
- 再谈querySelector和querySelectorAll
- 外部威胁已成为信息外泄的主因
- java加密解密研究8、MAC算法家族
- Ogre的SdkTray系统中Menu条目的中文显示