QString、Qbytearray、string的相互转换及相关问题

【QT】QByteArray、QString、char* 的相互转化(文本形式、二进制、十六进制) 在C语言中,系统都会默认在字符串末给我们加上\0用于结束字符串,所以在打印输出时候,只要你打印格式是%s,系统知道我们要输出字符串,而且系统也可以确定字符串的长度,所以当你用%s打印字符指针p的时候就会输出字符串,如果你是以地址打印格式输出的话,系统就会给我们打印出地址, 如果你是解指针(*p),那么系统就取p指针指向的内容,此时看你自己以什么格式输出,就用什么格式打印。新建一个记事本命名为1.txt,并在里面随便写入数据,使用ZIP进行压缩为1.zip,zip压缩文件是16进制的数据格式。 阅读详情

String和QString之间的转化可以按照如下进行:

QString qstr;
string str;
str = qstr.toStdString();
qstr = QString::fromStdString(str);

但是这样会出现中文乱码的问题,可以按照如下进行处理:

std::string cstr; 

QString qstring; 

//从std::string 到QString 

qstring = QString(QString::fromLocal8Bit(cstr.c_str())); 

//从QString 到 std::string 

cstr = string((const char *)qstring.toLocal8Bit()); 

//不需要从gbk转到utf8 

QString value_content = QString::fromStdString(vec[i].content); 

QString value_classname = QString::fromStdString(vec[i].classname); 

而QString只有在数据是文本的时候才能使用,而不是二进制的,非ASCII字符将通过QString::toAscii()被转换为'?'

QByteArray转QString需要注意的一个问题

  • QString类提供Unicode字符串。
  • QByteArray类提供存放二进制数据。
QByteArray byteArray;
byteArray += '1';
byteArray += '2';
byteArray += '\0';
byteArray += '3';
byteArray += '4';
QString str(byteArray);

 看似上面代码没问题,但实际上并不能得出我们想要的结果。
  str的内容是"12",而"\034"被剪掉了。于是找了下QString的说明文档,看到QString字符串的结尾和C风格的’\0’或0结尾相同。

QbyteArray转为qstring可以用

QByteArray qbyte = filein.readAll();
QString qstr = QString::fromLatin1(qbyte, qbyte.size());

QString转换成QByteArray

1、用toLocal8Bit();

2、用toLatin1()类虽然可以转换,但是遇到中文,显示?????。

3、在QJsonDocument中如果用toLocal8Bit会出现IllegalUTF8String,用一下方法可以解决:
QJsonDocument::fromJson(byteArray.toStdString().data(), &jsonError);  

从Qt 5.4开始,通过和QByteArray建立了对std::string转换

/*之前*/
// std::string => QByteArray
QByteArray byteArray(stdString.c_str(), stdString.length());

// QByteArray => std::string
std::string stdString(byteArray.constData(), byteArray.length());


/*现在*/
inline std::string QByteArray::toStdString() const
{ return std::string(constData(), length()); }

inline QByteArray QByteArray::fromStdString(const std::string &s)
{ return QByteArray(s.data(), int(s.size())); }
QT基础1:QT与C++的数据格式转换与图片相关 QT基础1:QT与C++的数据格式转换与图片相关1、数据格式转换1.1 QString与String1.2 string与QByteArray1.3 QJson与Qstring1.4 QByteArray=>QJson1.5 QJson => string2、QT显示一张图片3、QT与opencv显示视频与截取帧3.1、初始化3.2、截取帧4、JPG转base645、QT界面大小的设置背景图片6、 QT上画线7、解析QJson 1、数据格式转换 1.1 QString与String QStrin 阅读详情

相关推荐

Qt字符串性能优化:QString、QLatin1String与QStringLiteral深度解析

在C++和Qt开发中,字符串处理是基础且频繁的操作,其性能直接影响应用响应速度和内存占用。字符串常量的运行时构造涉及内存分配和编码转换,可能成为性能瓶颈。理解字符串的内部原理,如编码方式(UTF-16、Latin-1)和内存管理机制(如隐式共享),是进行高效编程的关键。通过选择合适的技术方案,可以显著提升程序效率,尤其在解析配置文件、处理日志或嵌入式开发等场景中价值突出。本文聚焦于Qt框架中的**QString**、**QLatin1String**和**QStringLiteral**这三个核心类,通过对

weixin_33853794的博客 453

std :: string与QByteArray的无损互转

从std :: string到QByteArray的无损互转

ManagerUser的博客 2481

积累:Qt 多种数据类型之间的转换方法

参数2默认情况下是十进制显示方式转换,也可以使用八进制、十六进制显示方式调用。如果基数为0,则使用C语言惯例:如果字符串以"0x"开头,则使用基数16;开发时经常涉及到数据类型的转换,为方便温故知新、提升开发效率,现将 Qt 开发部分常用的数据类型转换方式形成工具文档供查询、参考。参数1:返回的执行结果,如果ok不是nullptr,则将ok设置为false表示失败,将ok设置为true表示成功。参数3:如果参数2为浮点数为前提,参数3表示要保留小数位数。参数2:要转换的长度,默认为-1表示全部转换。

locahuang的博客 4054

QT5.12的QByteArray转QString中文出现乱码的问题

扣扣技术交流群:460189483 在做UDP通讯时,使用QByteArray接收到的数据,其中包括接收到的中文数据,在使用QString进行显示时,会出现乱码的问题,于是找了几种方法,走过的坑,都写下来,留作查看! // QString转QByteArray方法,这个没问题 //Qt5。12 QString str("hello"); QByteArray bytes = str...

u014453443的博客 1万+

我的Qt常用笔记(持续更新)

图片名称为image1.png,我这里放在了image文件夹中选中项目右键,添加新文件选择Qt Resource File,点击Choose然后给资源文件qrc取个名字,我这里取的名字是ret右键ret.qrc,Open in Editor然后会显示image.qrc这个窗口,点击下面添加前缀按钮注:可以添加前缀也可以不用添加前缀,添加前缀是为了更好区分资源。前缀名如果不知道起什么,就用“/”即可,然后点击add files然后,就可以点击添加文件。此时会弹出选择框让我们选择。

我智商开挂的博客 1455

Qt QByteArray如何转QString

如果QByteArray的数据不是UTF-8编码,可以使用QString的构造函数进行转换,这样可以根据具体的编码方式进行处理。如果QByteArray的数据是UTF-8编码的,可以使用fromUtf8()方法进行转换,这样可以确保正确的字符编码处理。要将QByteArray转换为QString,可以使用QString的构造函数或QString的fromUtf8()方法。在这种情况下,可以考虑使用QString的fromLatin1()方法或者手动指定编码方式进行转换。

xcksj666的博客 8108

QString 与 QByteArray的转换

1、QString 转换为 QByteArray QByteArray byte=“hello”; QString string; byte = string.toAscii(); 2、QByteArray 转换为 QString QByteArray byte(“111”); QString string; string = QString(byte);

u011352311的专栏 6467

Qt工程实践_05_Qt开发串口通讯软件中的数据转换问题:读取时QByteArray转str;发送时格式;int转16进制格式str;string中截取字符;16进制数加法;str转BytAr

在利用Qt进行串口程序开发过程中,除了与串口通讯的功能实现以外,数据的转换也是比较麻烦的一件事,本篇主要介绍串口通讯中数据转换的问题,关于功能实现大家在网上搜索就能找到相关案例。......

分享学习成长历程,Winter is coming! 2025

std::string,QString,QByteArray之间的转换与编码

原文链接:https://blog.csdn.net/weixin_45304839/article/details/128827741。

qq_41386330的博客 1893

保姆级教程:用Python+OpenCV搞定Orbbec Gemini深度与彩色流对齐(附完整代码)

本文提供了一份详细的Orbbec Gemini深度与彩色流对齐教程,涵盖从环境配置到完整代码实现的每一步。通过解析深度流对齐原理,对比不同对齐模式,并提供工业级应用中的问题排查方法,帮助开发者快速掌握Orbbec Gemini相机的使用技巧。文章还包含进阶应用如点云生成与三维重建的实战代码。

weixin_29090917的博客 466

Prometheus+Grafana部署及企业微信邮件/群消息告警通知配置

本文详细介绍了在Ubuntu 22.04系统上部署普罗米修斯监控系统的完整流程。首先说明了系统配置要求(2核CPU、4G内存、100G硬盘),然后分步骤指导下载、解压和安装普罗米修斯服务。文章包含配置prometheus.yml文件、启动服务、设置系统服务等关键操作,并提供了访问9090端口验证服务的方法。接着介绍了通过node_exporter监控Linux主机的配置过程,包括安装、启动服务和修改普罗米修斯配置文件添加监控项。最后还涉及了mysqld_exporter的部署流程,用于监控MySQL数据库服

m0_58761900的博客 1627

QString的相关类型转换

1.将QString转换为std::string,可以通过QString的成员函数toStdString() QString Qstr="123";std::string str=Qstr.toStdString(); 2.将QString转换为char *或者相反 直接转换不行,因为QString没有提供直接的成员函数,但是可以通过QByteArray中转一下,例如: int

CrazyDevil 1万+

金蝶云星空-协同开发云-安装开发环境

金蝶协同开发云就是不需要每一个开发都在自己的本机安装开发环境,自己安装可容易出错,包括源代码管理也一并解决了,大大减少了开发人员的工作量和降低了上手的难度。

qq_33881408的博客 5575

VS2019+qt string,QString中文乱码问题解决及string转换为QString时中文乱码问题

【bug】解决:VS2019+qt string,QString中文乱码问题解决!

你的问题在于,读书太少而想得太多。 2752

deepstream车道线检测自定义插件化,其中要注意pipeline的配置,如果插件位置配置不对,会报input format should be RGBA when using blur-obje

以上代码中,我们先从对象池中获取一个 DsUserMeta 对象,然后使用 get_lane_line_from_frame 函数获取车道线检测结果,并使用 add_lane_line_meta 函数将其添加到 DsUserMeta 对象中。注意,上述代码中的 get_lane_line_from_frame 函数和 add_lane_line_meta 函数需要你自己实现,用于从视频帧中提取车道线检测结果,并将其添加到 DsUserMeta 中。

pvmsmfchcs的博客 686

【多模态实验总结】整理了几十篇文章,理清 多模态目标检测 在写论文中需要做哪些实验

此篇文章中将多模态目标检测所做的实验,分成了各个类别,目的是为了对多模态的实验有一个清晰的理解。可以看到,很多表格中放的并不是做了单一的某一个对比,而是将提出的模型,在不同的骨干、数据集上的效果与基线进行对比,使内容更全面。因此这里提到的各种实验,大家在后续改进写论文过程中可以根据自己的论文内容进行整合。对于这里提到的这些文章,大家都可以看看,我只是按照我这里的分类截取了部分实验,这里提到的所有实验在每篇文章中也基本能看到相应的实验。

Limiiiing的博客 3130

Qt中的QString与char*的转换

对于这些基本的数据类型的转换有时会弄得我们很头疼。不会写,不敢写,写了怕错。虽然现在跑qt下了,这不遇见了第一次需要数据类型转换的时候了。   先说Qt中的QString如何转char*吧。 int main(int argc, char **argv){QApplication app(argc, argv);QString str1 = “Test”;QByteArray ba = str

RealPresence and Media Collaboration 专栏 790

PLC为西门子的S7-1200,舵机为 DS3218,PLC控制舵机旋转程序实现?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 988

QT char[]数组与QByteArrya、QString之间的转换

需求 由于使用QT写网络相关的界面,需要自定义数据结构,在解析时需要对char[]数组变量进行调用,需要在QString,QByteArray之间进行转换 QByteArray转char[] QByteArrya *qbyte = new QByteArray("hello world"); char cstr[20] = []; //strcpy strcpy(cstr,qbyte->da...

李的博客 4018

无监督学习与互信息

在机器学习中,获取大量高质量标注数据成本高昂。为解决此问题,无监督学习利用丰富的无标注数据成为研究重点。其中,互信息是衡量两个随机变量之间依赖关系的关键指标,能够捕捉非线性统计关联,非常适合处理非结构化数据。通过最大化神经网络中变量间的互信息,可以有效地从无标注数据中提取有用信息,提升模型在下游任务(如分类)的性能。互信息与熵密切相关,其值等于联合分布与边缘分布乘积间的KL散度,也可通过熵与条件熵的差值得出,具有对称性,并反映了已知一个变量后另一个变量不确定性的减少。

盼小辉丶的博客 3424

【WRF教程第3.5期】预处理系统 WPS 详解:以4.5版本为例

预处理系统 WPS 详解:以4.5版本为例

WW、forever的博客 1420

qt string内带变量_QT QString 很全的使用 (转)

QString,QByteArray, 和QVariant这三个类和容器有许多相同之处,并且在一些情况下可以被当作特殊的容器。 同样,像容器,这些类使用隐式共享来优化内存和速度。我们将从QString开始。 字符串被每个GUI程序所使用,不仅是用户界面而且还有数据结构。 C++原生提供两种字符串: 传统的C风格以'\0'结尾的字符数组和std::string类。 与这些不同,QString使用...

weixin_39681724的博客 1292

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

qstring转qchar_Qt-char*与QString互转

相关资源:https://blog.csdn.net/qq_20553613/article/details/787744761.char* 转QString方法一:直接用QString的构造函数转换,如下:char* ch = "acuity";//这种写法在我的QT中报 error: C2440: “初始化”: 无法从“const char [7]”转换为“char *”QString st...

weixin_39636609的博客 751

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C++开发中QString与std::string的深度对比与实战选型指南

在C++开发中,字符串处理是核心基础。从概念上讲,std::string是标准库提供的字节容器,本质是char的序列,不关心具体编码,开发者需自行处理多字节字符集。其设计哲学是提供基础构建块,与STL其他组件保持接口一致性。QString则是Qt框架中面向Unicode设计的字符串类,内部采用UTF-16编码,将字符抽象为QChar,自动处理编码复杂性,提供了丰富的API。在技术价值上,std::string轻量、无外部依赖,与操作系统API和C库交互成本低;QString则在处理国际化文本、图形界面开发时

weixin_34068198的博客 450

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【QT基础】数据类型及转换

除了上述方法,还可以使用其他相关的成员函数,如QDateTime::toString(Qt::DateFormat)、QDateTime::fromString(QString, Qt::DateFormat)等,根据具体的需求选择适合的函数来进行QDateTime和QString之间的转换。这样设计的目的是为了在不同的平台上保持一致的精度,并且在不同的平台之间进行数据交换时能够得到正确的结果。它是一个平台无关的浮点数类型,可以在不同的平台上保持一致的精度和行为。

qq_45031489的博客 1130
上一篇: 矩阵和向量的乘法顺序
下一篇: VS2017 FFmpeg配置
HelloEarth_
博客等级 码龄9年 38粉丝 49原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值