gpt4 book ai didi

将 QString 转换为 GB

转载 作者:行者123 更新时间:2023-11-30 14:37:04 24 4
gpt4 key购买 nike

想要将 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com