unsigned char *与char *(或者CString)如何互相转换?

如题... 如题 展开
 我来答
金色潜鸟
推荐于2016-01-29 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5732万
展开全部
MFC, c++ 语言。
CString 是 MFC 里的 class, 不是 c/c++ 的 基本变量。
用 unsigned char* 与 char* 构建 CString class , 可以调用 成员函数 Format().
从 CString 对象中提取 字符串 存入 unsigned char* 与 char* 最好用
const unsigned char* 与 const char*.
从 const 到 非 const 你可以用 strcpy().

转换程序例子如下。
注意:
包含 MFC 的 头文件
用 MS VC++ 编译器
编译普通.cpp 文件, 要带选项 /MT。
#include <afx.h>
#include<iostream>
#include <string>
using namespace std;
#include <stdio.h>

int main()
{
char *s="abcd 1234";
unsigned char US[]="XYZ 987";
CString S;
S.Format("%s",s); // 构建
std::cout << S.GetBuffer(S.GetLength()) << std::endl; //屏幕输出
S.ReleaseBuffer(); // 释放动态分配的内存
S.Format("%s",US); // 构建
std::cout << S.GetBuffer(S.GetLength()) << std::endl; //输出
S.ReleaseBuffer();

CString str = "Hello World";
const char* c =str; // 直接提取出字符串
printf("%s\n",c); // 前面包含了 stdio.h 所以 c++ 程序 也可以用c 风格输出
return 0;
}
输出:
abcd 1234
XYZ 987
Hello World
匿名用户
2011-07-05
展开全部
CString str = "abcd";
unsigned char* pC = (unsigned char*)(LPCTSTR)str;


CString s("ABC");
unsigned char *puc = (unsigned char*)s.GetBuffer( s.GetLength() );
...;//必须等指针使用完之后才能进行下一条释放命令。
s.ReleaseBuffer();
另外,站长团上有产品团购,便宜有保证
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吾阳煦0hu
推荐于2018-02-27 · TA获得超过119个赞
知道小有建树答主
回答量:266
采纳率:0%
帮助的人:67.4万
展开全部
强制转换
1. unsigned char * pa=(unsigned char*)pb; //pb是char*
2. unsigned char * pa=(unsigned char*)((char*)((LPCTSTR)str)); //str是CString
追问
强制换转会出现乱码的
追答
如果你使用了unicode的话,CString不能直接转换成char*或unsigned char*
两个方案:
1.创建工程的时候不使用unicode,如果工程已经创建,修改“项目->XXX项目属性->配置属性->常规->字符集->使用多字节字符集”
2.用TCHAR*代替char*,用WORD*代替unsigned char*
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式