请问QT怎么转换成LPCTSTR 可以使用的字母, 比如QString str1="text"; 接下来怎么做

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问QT怎么转换成LPCTSTR 可以使用的字母, 比如QString str1="text"; 接下来怎么做相关的知识,希望对你有一定的参考价值。

请问QT怎么转换成LPCTSTR 可以使用的字母,
比如QString str1="text"; 接下来怎么做

    LPCTSTR就是一个常量的TCHAR指针。

    QString 可以通过 toLatin1() 转换成 QByteArray,再通过 constData() 转换成 const char *,即:

    str1.toLatin1().constData();

参考技术A str1.data()或者str1.constData()。
具体区别看帮助吧,如果不改变的访问,constData快。追问

我试了不行,那个LPCTSTR的参数,可以用LPCSTR传传进去吗

追答

你这么说我也不明白你要做什么,也不知道什么错误。
很可能是语言问题。

追问

我有个MFC的头文件和LIB 可以在QT下用么

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);
//将数组的垃圾内容清空.

以上是关于请问QT怎么转换成LPCTSTR 可以使用的字母, 比如QString str1="text"; 接下来怎么做的主要内容,如果未能解决你的问题,请参考以下文章

C++ string如何转换为BSTR类型

C++ string 转化为LPCTSTR

如何在 Windows 上将 Qt QString 转换为 LPCTSTR

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

wstring如何转换成 LPCTSTR

如何在MFC中将std:string转换为LPCTSTR