QString转换成const char *
时间: 2023-09-18 11:12:37 浏览: 48
可以使用QString的toUtf8()方法将QString转换为QByteArray,然后再使用QByteArray的data()方法将其转换为const char *。
示例代码如下:
```C++
QString str = "Hello World!";
const char *cstr = str.toUtf8().data();
```
这样就可以将QString转换为const char *类型了。需要注意的是,转换后的const char *指针指向的内存空间由QString对象管理,不应当手动释放。如果需要在转换后的const char *指针使用完毕后释放内存,应当手动复制一份数据到新的内存空间中,再进行操作。
相关问题
QString怎么转成const char*
可以使用QString的toUtf8()或toLatin1()函数将QString转换为const char*。示例如下:
```c++
QString str = "Hello World";
const char* cstr = str.toUtf8().constData(); // 将QString转换为UTF-8编码的const char*
```
或者
```c++
QString str = "Hello World";
const char* cstr = str.toLatin1().constData(); // 将QString转换为Latin1编码的const char*
```
需要注意的是,使用toUtf8()函数将QString转换为UTF-8编码的const char*时,返回的const char*指针是临时的,其生命周期仅限于函数范围内。如果需要在函数外部使用该指针,则需要将其复制到动态分配的内存中。
将QVector<QString>转const char**
可以使用以下代码将 QVector<QString> 转换为 const char**:
```cpp
QVector<QString> vec;
// 填充 vec
const char** arr = new const char*[vec.size()];
for(int i=0; i<vec.size(); i++) {
arr[i] = vec[i].toLocal8Bit().constData();
}
// 使用 arr
delete[] arr; // 记得释放内存
```
这里的关键在于将 QString 转换为 const char*。我们可以使用 QString 的 toLocal8Bit() 方法将其转换为本地字符集编码的 QByteArray,再使用 constData() 方法获取其指向的 const char*。最后将这个 const char* 赋值给 const char** 数组即可。需要注意的是,这里需要手动分配内存,并在使用完后手动释放。