我有一个丑陋的代码用于这个东西(创建ac char指针并在其中复制QString)但可能......在QT中以优雅的方式存在...
实际代码:
QString maquina is a method parameter.
char *c_maquina = new char[maquina.length() + 1];
strcpy(c_maquina, maquina.toStdString().c_str());
Run Code Online (Sandbox Code Playgroud)
只是为了获取信息我需要一个REAL char*而不是一个简单的const char*所以这段代码不起作用:
idMaquina.toLatin1().data();
Run Code Online (Sandbox Code Playgroud)
我无法使用http://developer.qt.nokia.com/faq/answer/how_can_i_convert_a_qstring_to_char_and_vice_versa
Pav*_*hov 30
这很简单:
QByteArray array = string.toLocal8Bit();
char* buffer = array.data();
Run Code Online (Sandbox Code Playgroud)
您也可以使用toLatin1或toUtf8代替toLocal8Bit.请注意,它们都不能与data呼叫排队.而且toStdString().c_str()也是无效的.这是因为任何QByteArray或std::string以这种方式产生的都是临时的,并且会立即销毁它来破坏char缓冲区.QByteArray在使用缓冲区时,需要存储在局部变量中.
另请注意,Qt提供QByteArray了处理char数组的类.一般没有必要使用char*,你几乎可以做任何事情 QByteArray.