C++CString转换为const char *类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++CString转换为const char *类型相关的知识,希望对你有一定的参考价值。
CString str; 怎么转换
参考技术A LPCTSTRlpszText
=
(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 *类型的主要内容,如果未能解决你的问题,请参考以下文章
c++中出现 无法从“CString”转换为“const std::string”错误
VS2008 C++中 inet_addr()函数用法。 inet_addr: 不能将参数 1 从“CString”转换为“const char *”