3个回答
展开全部
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
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();
另外,站长团上有产品团购,便宜有保证
unsigned char* pC = (unsigned char*)(LPCTSTR)str;
或
CString s("ABC");
unsigned char *puc = (unsigned char*)s.GetBuffer( s.GetLength() );
...;//必须等指针使用完之后才能进行下一条释放命令。
s.ReleaseBuffer();
另外,站长团上有产品团购,便宜有保证
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
强制转换
1. unsigned char * pa=(unsigned char*)pb; //pb是char*
2. unsigned char * pa=(unsigned char*)((char*)((LPCTSTR)str)); //str是CString
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*
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询