摘要: Qt creator默认使用utf-8无BOM保存源文件,但VS要utf-8源文件是带BOM的,所以默认生成的源文件在gcc下可以编译,但vc编译会提示"源文件中有无法识别的编码"云云,导致无法编译。为此要在Creator设置中将默认源文件保存为utf-8时默认添加BOM。这样就可以同时支持vc、g 阅读全文
posted @ 2018-07-03 10:26 思危 阅读(499) 评论(0) 推荐(0) 编辑
摘要: 工作中经常遇到需要在数据流中提取数据帧的任务。这种数据帧一般以某种特定数据序列表示开始(例如0xa5,0x5a)和结束(0xb5, 0x5b),起始标记间的数据为帧有效数据。为了完成这一任务,包装了一个简易的解析类,在性能要求不高场合使用。 2019-08-02升级: 可以用参数 discardTa 阅读全文
posted @ 2017-11-21 16:56 思危 阅读(2838) 评论(1) 推荐(0) 编辑
摘要: 找了好久才发现,位置如下: 设置 - 时间和语言 - 区域和语言 - 选中语言后点“选项”按钮 - 在“键盘”下列出系统当前的输入法,可以选中对应的输入法进行设置修改或删除添加输入法。 阅读全文
posted @ 2017-10-17 11:13 思危 阅读(334) 评论(0) 推荐(0) 编辑
摘要: 工作中经常遇到在枚举编码与字符串形式转换的需求,写一个模板类来实现该功能。 理想情况下,字符串的类型最好自动推导,但尝试用auto function() ->decltype()的方法实现总是提示语法错误无法编译,留待将来解决,现暂用模板参数实现。 阅读全文
posted @ 2017-04-27 11:35 思危 阅读(1606) 评论(0) 推荐(0) 编辑
摘要: 此外在c++17之前,各大类库基本都提供了自己variant万能类,c++17 标准库引入any类可取代之,并提供更好的类型安全和效率。 any 类可以容纳任意类型(可构造,复制)的值。用途目的之一可避免小对象的动态内存分配。例如在一个数组中存放基类及子类,实现基类多态访问。std::vector< 阅读全文
posted @ 2017-04-21 15:21 思危 阅读(4782) 评论(0) 推荐(0) 编辑
摘要: optional用途如其名,它可以容纳一个对象值或是为空。典型的应用情景是函数调用时,如需根据条件返回一个对象(有效)或默认对象(无效),若该对象构造成本很高(资源分配等),可用optional返回一个空对象,提高效率。 例如: 阅读全文
posted @ 2017-04-21 15:15 思危 阅读(4762) 评论(0) 推荐(1) 编辑
摘要: c++17标准中引入了variant来作为union的类型安全替代品。它可以在任意时间保存模板参数列表中某一类型的值或者空值。与union一样,如果某一variant保存类型T的一个值,那么T的对象被直接分配在variant的内部。variant不能在动态内存分配方式中使用。variant不可存放引 阅读全文
posted @ 2017-04-21 15:05 思危 阅读(12682) 评论(0) 推荐(1) 编辑
摘要: 在开发中经常要遇到需要将对象进行串行化(serialize)的情况,但c++语言或标准库目前并无直接的实现支持。同时由于c++本身的RTTI机制比较简单,功能有限,在面向对象编程时通过基类或接口指针进行串行化操作时更麻烦。本文是尝试解决该问题的一个实现。 程序中需要序列化的数据为对象Data及其派生 阅读全文
posted @ 2016-05-24 17:49 思危 阅读(4338) 评论(1) 推荐(0) 编辑