我发现了这个问题(对我而言毫无用处):How to convert QString to LPCSTR (Unicode)你们中的大多数人可能会认为重复,但是我认为它要么与不同的Qt / VS / C++版本相关,要么没有正确的答案(尽管有些标记为)。
我在Windows 7的Visual Studio 2013中使用Qt5编写了此代码,使用C++ 11标准,它在链接的答案中使用了所有建议的解决方案:
QString test = "hello world";
// 1
LPCSTR lp1 = _T(test.toLocal8Bit().constData());
// 2
LPCSTR lp2 = _T(test.toUtf8().toStdString().c_str());
// 3
LPCSTR lp3 = _T(test.toLatin1().toStdString().c_str());
2Sþ¹ººoji 2 2 2 2 2 2 oji oji oji oji oji
þþþþþoji oji oji oji oji oji oji
þþþþþoji oji oji oji oji oji oji
如何转换?
最佳答案
感谢HuntsMan @ irc.freenode.net,我找到了正确的解决方案:
QString test = "hello world";
QByteArray test_ar = test.toLocal8Bit();
LPCSTR lp2 = _T(test_ar.constData());
问题是退出该行代码后,立即从堆栈中删除了QByteArray的副本,因此在LPCSTR时传递的指针指向已删除的内存。
关于c++ - 如何将Qt5中的QString转换为Visual Studio 2013中的LPCSTR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28090577/