char * 转成qstring
时间: 2024-10-20 08:04:06 浏览: 19
在Qt中,如果你有一个指向C风格字符串(char*)的指针,并想要转换为`QString`,你可以这样做:
```cpp
#include <QString>
#include <QChar>
// 假设你已经有了一个char*类型的字符串叫做str_c_style
QString str_qt = QString::fromLocal8Bit(str_c_style);
// 或者如果str_c_style是UTF-8编码的
QString str_qt_utf8 = QString::fromUtf8(str_c_style);
// 如果你想处理可能出现的编码问题,还可以尝试:
QString str_qt_safe = QStringUtils::fromLocal8Bit(str_c_style); // 使用QStringUtils避免潜在的错误
// 注意,`fromLocal8Bit`和`fromUtf8`函数会根据字符串的实际编码自动转换。
```
这里的关键在于`fromLocal8Bit`和`fromUtf8`这两个函数,它们分别针对本地8位字符集和UTF-8编码的字符串进行转换。
相关问题
char*转成QString
在C++中,`char*`是一个字符数组或指向字符的指针,而`QString`是Qt库中的字符串类型。如果你想要将`char*`转换为`QString`,你可以使用`QChar::fromUtf8()`函数或者`QString::fromLocal8Bit()`,如果字符串是用本地编码的。
以下是两种常见的转换方法:
1. 使用`QChar::fromUtf8()`:
```cpp
#include <QtWidgets>
QString utf8StringFromChar(char* cStr) {
return QString::fromUtf8(cStr);
}
```
这里假设`cStr`是一个UTF-8编码的字符串。
2. 使用`QString::fromLocal8Bit()`:
```cpp
QString local8BitStringFromChar(char* cStr) {
return QString::fromLocal8Bit(cStr);
}
```
这里假设`cStr`是一个本地编码(如ASCII)的字符串。
const char*转成QString
在Qt框架中,`const char*`常用于表示C风格的字符串,而`QString`则是Qt中的Unicode字符串类。如果你想把C风格的字符串转换为`QString`,你可以使用`QString::fromLocal8Bit()`或者`QString::fromUtf8()`方法,这两个方法都接受`const char*`作为输入。
以下是示例:
```cpp
#include <QCoreApplication>
#include <QString>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
const char* cStr = "Hello, Qt!";
QString qStr = QString::fromUtf8(cStr);
// 或者使用 fromLocal8Bit() 如果cStr是本地编码的字符串
qDebug() << "C string: " << cStr;
qDebug() << "QString: " << qStr;
return a.exec();
}
```
在这个例子中,`qStr`变量现在包含了原始C字符串的内容,并且是以Qt兼容的格式存储的。
阅读全文