将 QString 转换为 GB

标签 c qt gtk glib qstring

想要将 QString 转换为 GBytes (glib)

我通过将 QString 转换为 GByteArray 尝试了以下操作,然后 将其释放到 GB

extern "C" {
#include <glib.h>
};
#include <QString>
#include <QApplication>

int main(int argc, char *argv[])
{

    QApplication app(argc, argv);

QString mylongstring = "HELLO_WORLD";

GByteArray *barr;
barr = g_byte_array_new ();

for (int i = 0; i < mylongstring.toLocal8Bit().count(); i++)
{
     guint8 *charAt = (guint8*)mylongstring.at(i); //cant convert qchar to uint -> already crashes

    g_byte_array_append (barr, (guint8*) charAt, 1); 
}
GBytes *gbytes = g_byte_array_free_to_bytes(barr); //should contain the (guint8*) data of mylongstring

    return app.exec();
}

最佳答案

为什么不从 QByteArray 中获取 GByteArray ?循环的目的是什么?

我认为您的强制转换导致了问题,因为它没有分配足够的字节,请检查:https://doc.qt.io/qt-5/qbytearray.html#data

通过从 QByteArray data() 获取 GByteArray 重写代码似乎更安全..

QByteArray _string2BA = mylongstring.toLocal8Bit();
char *data = new char[_string2BA.size() + 1];
strcpy(data, _string2BA.data());
GByteArray *barr;
barr = g_byte_array_new ();
barr = (GByteArray*)data;

GBytes *gbytes = g_byte_array_free_to_bytes(barr); //should contain the (guint8*) data of mylongstring

关于将 QString 转换为 GB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57638498/

相关文章:

c - 有什么办法可以加快打印阵列的速度吗?

c - 理解c语言中的基本变量声明

c++ - QtConcurrent::run 正确使用

c++ - 使用单色 QImage

printing - 将 Gtk.Widget 打印到打印机的最佳方法是什么?

linux - GNOME 3 中 JetBrains 的 PyCharm 窗口中的不可见文本

linux - 在 GTK 依赖项上编译 Cairo-dock 错误

c - 错误是在语法中还是在代码中?

c++ - SQL 表事件存储作为 Qt App 中的队列

c - 在此函数中使用未初始化的二维数组