C++CString转换为const char *类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++CString转换为const char *类型相关的知识,希望对你有一定的参考价值。

CString str; 怎么转换

参考技术A LPCTSTR
lpszText
=
(LPCTSTR)str;
CString
重载了
LPCTSTR
的隐式
类型转换
LPCTSTR
被定义为
const
TCHAR
*
TCHAR
在多字节编码里被定义为
char,
在宽字符里被定义为
wchar_t
参考技术B 将cstring转换为char*类型
1.传给未分配内存的const
char*
(lpctstr)指针.

cstring
cstr(asdd);

const
char*
ch
=
(lpctstr)cstr;

ch指向的地址和cstr相同。但由于使用const保证ch不会修改,所以安全.
2.传给未分配内存的指针.

cstring
cstr
=
"asddsd";

char
*ch
=
cstr.getbuffer(cstr1.getlength()
+
1);

cstr.releasebuffer();

//修改ch指向的值等于修改cstr里面的值.

//ps:用完ch后,不用delete
ch,因为这样会破坏cstr内部空间,容易造成程序崩溃.
3.第二种用法。把cstring
值赋给已分配内存的char
*。

cstring
cstr1
=
"asddsd";

int
strlength
=
cstr1.getlength()
+
1;

char
*pvalue
=
new
char[strlength];

strncpy(pvalue,
cstr1,
strlength);
4.第三种用法.把cstring
值赋给已分配内存char[]数组.

cstring
cstr2
=
"asddsd";

int
strlength1
=
cstr1.getlength()
+
1;

char
charray[100];

memset(charray,0,
sizeof(bool)
*
100);
//将数组的垃圾内容清空.

以上是关于C++CString转换为const char *类型的主要内容,如果未能解决你的问题,请参考以下文章

将 CString 转换为 const char*

c++中出现 无法从“CString”转换为“const std::string”错误

VS2008 C++中 inet_addr()函数用法。 inet_addr: 不能将参数 1 从“CString”转换为“const char *”

CString 转化成 const char* 类型

VS2017出现不存在从"CString"到"const char*"的适当转换函数

c_cpp 如何在C中将const char *转换为char *?