`

把QString转换成 char * 中需要注意的地方

阅读更多

最近在写一个QT程序。需要把QString 转换成char * 指针。结果遇到程序崩溃的严重错误。在大量的帮助调试下,发现是QString转换成char * 的时候,一定要定义一个QBateArray的变量。不能连写

以下是官方回复:

How can I convert a QString to char* and vice versa ?(trolltech)
Answer:
In order to convert a QString to a char*, then you first need to get a latin1 representation of the string by calling toLatin1() on it which will return a QByteArray. Then call data() on the QByteArray to get a pointer to the data stored in the byte array. See the documentation:
See the following example for a demonstration:


int main(int argc, char **argv)
{
QApplication app(argc, argv);
QString str1 = "Test";
QByteArray ba = str1.toLatin1();
const char *c_str2 = ba.data();

printf("str2: %s", c_str2);
return app.exec();
}
Note that it is necessary to store the bytearray before you call data() on it, a call like the following
const char *c_str2 = str2.toLatin1().data();
will make the application crash as the QByteArray has not been stored and hence no longer exists.


To convert a char* to a QString you can use the QString constructor that takes a QLatin1String, e.g:
QString string = QString(QLatin1String(c_str2)) ;

差点给QT弄的精神崩溃。

分享到:
评论

相关推荐

    QString含汉字时,完美转char*和unsigned char*

    当QString内容包含汉字时,转换char*等会发生失败。此接口解决了该问题。使用后char*与unsigned char*的qDebug()输出与QString输出结果相同。 注意,该函数返回unsigned char*使用完毕后记得delete。

    QString转换为TCHAR*

    当Qt代码需要与非Qt的Windows API交互时,如调用WinAPI函数,就需要将QString转换成TCHAR*。本文将详细讲解如何有效地进行这种转换,并确保编译运行通过。 首先,了解QString和TCHAR*的基本概念。QString是Qt库中的...

    Qt中QString转换成const char * ()、QByteArray等方法

    使用`QString::toUtf8()`,`QString::toLocal8Bit()`等方法将QString转换为QByteArray,然后可以通过`data()`获取`char *`指针。 6. `QString`到`char *`: 要得到一个可打印的C风格字符串,可以使用`qPrintable...

    Qt中所有类型转换

    - **QString到char**: 可以通过直接赋值的方式将单个字符的QString转换为char类型。 - 示例:`char a = 'b'; QString str = QString(a);` ##### 1.2 其他类型到QString的转换 - **int、double到QString**: 可以...

    QT中 各类型的转换

    本文将详细介绍QT中各种类型之间的转换方法,包括但不限于`char*`与`QString`之间的转换、`QByteArray`与`QString`之间的转换等。 #### 一、`char*`与`QString`之间的转换 **1.1 `char*`转为`QString`** - **直接...

    Qt数据类型的转换

    4. **`char*`与`const char*`之间的转换** - **示例代码**: ```cpp char* ch1 = "hello"; const char* ch2 = "world"; ch2 = ch1; // 不报错,但有警告 ch1 = (char*)ch2; ``` 5. **中文转换** - **中文...

    QT常用控件编程.docx

    在从QString转换到char *时,可以使用`toLatin1()`方法,并通过`data()`方法获取底层的char *指针。需要注意的是,`data()`返回的指针是只读的,因此不能用来修改原始字符串数据。 3. **int与QString之间的转换**...

    QString和char以及string之间的赋值详解

    在将`QString`对象赋值给`char*`时,通常需要将其转换为`Latin1`编码,因为`char*`通常用于存储ASCII或ISO-8859-1编码的字符。以下是一个例子: ```cpp QString qstr = "Hello, World!"; char* str = qstr.toLatin1...

    qt数据类型转换

    这篇教程主要针对初学者,涵盖了Qt框架中的一些基本数据类型转换,包括字符串(QString)、整型(int)、浮点型(double)以及字符指针(char*)。下面是详细的知识点解析: 1. **QString到std::string的转换**: ...

    QT中文转换方法

    本文主要介绍如何在QT中实现中文字符串的转换,以及如何在`QString`与C/C++中的`char*`或`std::string`之间进行相互转换。 #### 关键概念 - **QString**: 是QT框架中用于处理字符串的核心类,它提供了丰富的API来...

    QString转ASCII(uint).txt

    在需要ASCII值的情况下,可以使用`toLatin1()`方法将QString转换为QByteArray,然后根据需要处理字节。理解ASCII编码和QString之间的关系,对于进行跨平台的、底层的数据处理是非常重要的。在进行这类操作时,务必...

    Qt下串口控制微型热敏打印机(嵌入式打印机)

    在本文中,我们将深入探讨如何在Qt环境下对嵌入式热敏打印机进行串口控制,同时解决在ARM平台上遇到的一些常见问题,如QString与char*转换时的乱码问题、Qt数据库查询的回调机制以及通过串口发送十六进制数据的方法...

    ARM开发学习笔记

    - **从QString转换为char***: ```cpp char* buf = rxStr.toLatin1().data(); ``` - **格式化字符串**: ```cpp QString str2 = QString("ADC:%1").arg(value); ``` #### 编码转换:UTF-8与GB2312 - **从GB...

    C/MFC/Qt数据间转换总结

    - `c_str()` 方法可以将`std::string`对象转换为const char*,而`data()`方法则返回可读写的指针。 - 反向转换时,可以创建一个新的`std::string`对象,传递char*作为构造函数的参数。 2. **String与char数组之间...

    linux QT显示中文

    int main(int argc, char* argv[]) { QApplication app(argc, argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030")); QWidget *pWidget = new QWidget; QLabel label(pWidget); label....

    QString转ASCII

    这个例子展示了如何将一个包含ASCII字符的QString转换为QByteArray,然后逐个处理字节以显示ASCII字符。同时,也展示了如何将单个字节转换回QString。这个过程对于处理ASCII编码的数据或者进行字符编码转换是非常...

    cJSON库(json格式字符串进行转化)

    const char* json_str = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; cJSON* json_root = cJSON_Parse(json_str); cJSON* name = cJSON_GetObjectItem(json_root, "name"); cJSON* age = cJSON...

    Qt中整形数组转换成字符串的问题.pdf

    在需要将QString转换为C风格的`char*`字符串时,可以使用`toLocal8Bit().data()`或`toStdString().data()`: ```cpp QString qstr = "hello,world"; const char *p1 = qstr.toLocal8Bit().data(); const char *p2 =...

    CString 类与常用数学类型转换

    【CString 与 char*相互转换】: 1. **从 CString 到 char***:可以使用`GetBuffer`或`GetString`方法: ```cpp CString str = "Hello"; char* cStr = const_cast<char*>(str.GetString()); ``` 2. **从 char* ...

    QT基本类型及使用说明

    - **char* to QString**: - 示例:`const char *cStr = "Hello Qt"; QString str = QString::fromLocal8Bit(cStr);` - 结果:`str` 变为 `"Hello Qt"`。 - **char to number**: - 示例:`char c = '9'; int num ...

Global site tag (gtag.js) - Google Analytics