qt中的一些知识的记录

FrostyForest / 2023-05-04 / 原文

目录
  • qstring,QByteArray,char* 是什么关系

qstring,QByteArray,char* 是什么关系

您好,这是Bing。我尝试用您的输入语言回答您的问题。😊

根据我的搜索结果,qstring,QByteArray,char是三种不同的数据类型,它们之间可以相互转换¹²³⁴。qstring是一个表示Unicode字符串的类¹,QByteArray是一个表示字节数组的类²,char是一个指向字符数组的指针³。它们之间的关系如下:

  • 要把qstring转换为char,可以使用toLatin1(),toLocal8Bit(),toUtf8()等方法,它们会返回一个QByteArray对象,然后再调用data()或constData()方法,得到一个char指针¹。例如:
// 假设有一个qstring对象str
QString str = "Hello";
// 转换为char*指针
char *cstr = str.toUtf8().data();
  • 要把char转换为qstring,可以使用fromLatin1(),fromLocal8Bit(),fromUtf8()等静态方法,它们会接受一个char指针和一个可选的长度参数,返回一个qstring对象¹。例如:
// 假设有一个char*指针cstr
char *cstr = "Hello";
// 转换为qstring对象
QString str = QString::fromUtf8(cstr);
  • 要把QByteArray转换为char,可以直接调用data()或constData()方法,得到一个char指针²。例如:
// 假设有一个QByteArray对象ba
QByteArray ba = "Hello";
// 转换为char*指针
char *cstr = ba.data();
  • 要把char转换为QByteArray,可以直接使用QByteArray的构造函数,它会接受一个char指针和一个可选的长度参数,返回一个QByteArray对象²。例如:
// 假设有一个char*指针cstr
char *cstr = "Hello";
// 转换为QByteArray对象
QByteArray ba(cstr);
  • 要把qstring转换为QByteArray,可以使用toLatin1(),toLocal8Bit(),toUtf8()等方法,它们会返回一个QByteArray对象¹。例如:
// 假设有一个qstring对象str
QString str = "Hello";
// 转换为QByteArray对象
QByteArray ba = str.toUtf8();
  • 要把QByteArray转换为qstring,可以使用QString的构造函数,它会接受一个QByteArray对象作为参数,返回一个qstring对象¹。例如:
// 假设有一个QByteArray对象ba
QByteArray ba = "Hello";
// 转换为qstring对象
QString str(ba);

源: 与必应的对话, 2023/5/4
(1) c++ - Converting QString to char* - Stack Overflow. https://stackoverflow.com/questions/5505221/converting-qstring-to-char.
(2) qt - How to get a QByteArray from a QString? - Stack Overflow. https://stackoverflow.com/questions/47437036/how-to-get-a-qbytearray-from-a-qstring.
(3) QT char[]数组与QByteArrya、QString之间的转换 - CSDN博客. https://blog.csdn.net/u013894391/article/details/105836188.
(4) QT中QString/char*/QByteArray之间的互转 - 知乎. https://zhuanlan.zhihu.com/p/84312767.