【1】QString字符串不支持双引号

最近做项目(本地环境:WIN10 + QT5.9.2 + VS2017)。有个需求,需要实现形如 "key="123456"" 这样的字符串。

查了很多资料,发现QString是没法实现愿望的。

但是,std::string可以实现字符中双引号的夙愿,只要加反斜杠即可。

于是,有了下面的 Demo示例。

【2】应用实例

代码如下(备注:比较简单,仅仅贴cpp文件):

 #include <QtWidgets/QApplication>
#include <QDebug>
#include <QString>
#include <QByteArray>
#include <QCryptographicHash> int main(int argc, char *argv[])
{
QApplication a(argc, argv); QString strQString = "key=4008001234";
QByteArray qstrByte = strQString.toUtf8();
QString strQStringMd5 = QCryptographicHash::hash(qstrByte, QCryptographicHash::Md5).toHex();
qDebug() << "strQStringMd5 :: " << strQStringMd5; // "49b18827db03d50ae206e177391d8b09" #if 0
// QT5.4之前的版本,转换方式:
// std::string => QByteArray
QByteArray byteArray(stdString.c_str(), stdString.length());
// QByteArray => std::string
std::string stdString(byteArray.constData(), byteArray.length()); // QT5.4之后版本,转换方式:
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()));
}
#endif
std::string strValue = "key=\"4008001234\"";
QByteArray stdByte = QByteArray::fromStdString(strValue);
QString strStdMd5 = QCryptographicHash::hash(stdByte, QCryptographicHash::Md5).toHex();
qDebug() << "strStdMd5 :: " << strStdMd5; //"f43fa89e23dae10edc6545ebb14aada9" return a.exec();
}

总结:QString的确不支持双引号,但是可以变换思路,为了构建QByteArray类型的参数,我们可以使用std::string实现字符串中双引号的梦想。

【3】调试结果

有人或许看了上面实例会反问,仅仅从加密得出的字符串不同就可以判定后者是加了双引号吗?的确说服力不够。

从哪里可以确定加密的字符串是加双引号的呢?正如博客首页所述:编码以明志,调试而致远。

可以看看下面的两张调试截图:

(1)QString字符串转换为QByteArry后的结果

(2)std::string字符串转换为QByteArray后的结果

相信这样可以更笃定,且更喜欢调试的魅力。

Good Good Study, Day Day Up.

顺序  选择  循环  总结

QString字符串中双引号的梗的更多相关文章

  1. 在java代码中显示json字符串(怎么避免json字符串中双引号在java代码中显示)

    String log = "eyJvcmRlckluZm8iOnsiaWQiOjEwNzQwNCwib3JkZXJJZCI6MjczNjQyMSwicHJvZHVjdENvZGUiOjQ1N ...

  2. ASP中双引号单引号和&连接符使用技巧

    ASP中双引号单引号和&连接符使用技巧 一.ASP中处在双引号中的可以是任意的字符.字符串,HTML代码 1.<%response.write ("I am here" ...

  3. spring boot 配置 fastjson 替代 Jackson (并解决返回字符串带双引号问题)

    注:以我遇到的情况,只要发出的请求参数是map格式的,都会在前后多加一个双引号 以下代码有两个功能:1.FastJson 替换 Spring 自带的 Jackson  2.解决返回的字符串带双引号问题 ...

  4. spring mvc 返回字符串带双引号及StringHttpMessageConverter乱码处理

    本文转载自:http://blog.csdn.net/wangyangbto/article/details/48804155 很多人都碰到过,SpringMVC使用 @ResponseBody 注解 ...

  5. 前台传递给后台的JSON字符串中的引号 “” 在JAVA后台被转义为 "

    前台传递给后台的JSON字符串中的引号 "" 在JAVA后台被转义为 &quot 1.问题: 前台数据,JSON字符串带有引号 "" ,数据被传递到后台 ...

  6. include包含头文件的语句中,双引号和尖括号的区别是什么?

    include包含头文件的语句中,双引号和尖括号的区别是什么?  #include <> 格式:引用标准库头文件,编译器从标准库目录开始搜索 尖括号表示只在系统默认目录或者括号内的路径查找 ...

  7. include包含头文件的语句中,双引号和尖括号的区别

    include包含头文件的语句中,双引号和尖括号的区别   #include <>格式:引用标准库头文件,编译器从标准库目录开始搜索 #incluce ""格式:引用非 ...

  8. PHP中双引号引起的命令执行漏洞

    前言 在PHP语言中,单引号和双引号都可以表示一个字符串,但是对于双引号来说,可能会对引号内的内容进行二次解释,这就可能会出现安全问题. 正文 举个简单例子 <?php $a = 1; $b = ...

  9. shell 脚本中双引号 单引号 反引号 的区别

    转自:http://blog.csdn.net/iamlaosong/article/details/54728393 最近要编个shell脚本处理数据,需要检测数据文件是否存在,文件名中包含日期,所 ...

随机推荐

  1. 20165336 学习基础与C语言基础调查

    20165336 技能学习心得与c语言学习 一.心得体会 做教练 从老师的健身教练健身学员的学习关系中我懂得了学生应该有自主的学习意识,要有计划地去训练.去流汗,并且要以100分的要求严于律己,老师是 ...

  2. python摸爬滚打之day02----while循环,运算符,格式化输出

    1.while循环 1.1  结构:while +条件判断: while 循环体 else: 条件不成立时语句块 while...else...是一个循环整体,当循环条件成立时执行while循环体内容 ...

  3. 注解之@PathVariable

    @PathVariable只支持一个属性value,类型是为String,代表绑定的属性名称.默认不传递时,绑定为同名的形参. 用来便捷地提取URL中的动态参数.其英文注释如下: Annotation ...

  4. module_init 内核调用过程

    内核版本:linux_2.6.22.6 入口源文件: init.h

  5. 微信小程序首支视频广告片发布

    自2017年1月9日上线以来,微信小程序瞬间引爆网络,又迅速归于平静.对这个“无需安装.触手可及.用完即走.无需卸载”的小程序,微信从一开始就对它寄予了无限期望.在公布一系列规则更改后,微信小程序终于 ...

  6. python的第三方库

    python的第三方库 https://www.lfd.uci.edu/~gohlke/pythonlibs/

  7. 浅谈JS的变量提升

    JS的解析机制,是JS的又一大重点知识点,在面试题中更经常出现,今天就来唠唠他们的原理.首先呢,我们在我们伟大的浏览器中,有个叫做JS解析器的东西,它专门用来读取JS,执行JS.一般情况是存在作用域就 ...

  8. vue-父组件向子组件传递方法

    1.父组件向子组件传递方法,使用的是事件绑定机制 v-on:传递给子组件的方法名=“父组件中的方法”

  9. 转换区别json

    private Date EndDate ; private Instant xxxxdate; private LocalDateTime localDateTime; public static ...

  10. try finally 处理方式

    这样的处理方式:主要解决当资源建立连接后,出现问题,需要关闭资源.                           异常无法直接catch处理,但是资源需要关闭