qt 出现警告: 将‘false’转换为指向‘QString::QString(const char*)’的实参 1 的指针类型 [-Wconversion-null] return fal
时间: 2024-05-10 13:14:46 浏览: 3
这个警告是因为代码中将布尔值 `false` 直接转换为了一个指向 `QString` 类型的指针,而 `QString` 构造函数接受的参数类型是 `const char *`。因此,编译器会发出警告提示可能存在类型转换错误。
为了解决这个警告,你可以使用 `QString` 类型的构造函数来创建一个新的字符串,而不是将 `false` 直接转换为一个指针。例如:
```cpp
QString str = QString("false");
return str;
```
这样就可以避免警告了。
相关问题
将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** 数组即可。需要注意的是,这里需要手动分配内存,并在使用完后手动释放。
QString转换成const char *
可以使用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 *指针使用完毕后释放内存,应当手动复制一份数据到新的内存空间中,再进行操作。