编码
写有意思的代码
这个作者很懒,什么都没留下…
展开
-
按指定条件从C++11 map中删除元素
问题无法使用remove_if配合map容器的erase操作按指定条件从map容器删除元素。C++11 解决方案可以使用一下函数实现这个需求:template<typename K, typename V>void filterMap(map<K, V> & mapObj, bool(*pred)(const K &, const V &)){ for (auto it = mapObj.begin(), ite = mapObj.en原创 2021-12-14 19:49:43 · 1771 阅读 · 1 评论 -
BOOST_SCOPE_EXIT在C++11中的替代方案
背景Boost库中的BOOST_SCOPE_EXIT宏用于在程序退出当前区块时执行指定操作,例如下面的代码{ int * ptr = new int; BOOST_SCOPE_EXIT(ptr) { delete ptr; std::cout << "Delete pointer" << std::endl; } BOOST_SCOPE_EXIT_END std::cout << "原创 2021-11-22 21:02:28 · 1018 阅读 · 0 评论 -
C++11 类头文件不暴露私有变量的一种写法
动机在类的头文件中不暴露私有变量,目的一般有两个:1. 提供给别人的dll对应的头文件中,不希望在头文件中暴露私有变量的名称;2. 因为私有变量的类型需要包含另一个头文件,所以不希望在头文件中包含其它头文件;示例头文件#pragma once#include <memory>#include <string>class Person{public: Person(const std::string & sName); Person(co原创 2021-04-19 17:29:02 · 1816 阅读 · 0 评论 -
Windows消息打印函数
C语言版const char * getMsgStr(const unsigned int nMsgVal){ switch (nMsgVal) { case 0x0: return "WM_NULL"; case 0x1: return "WM_CREATE"; case 0x2: return "WM_DESTROY"; case 0x3: return "WM_MOVE"; case 0x5: return "WM_SIZE"; case原创 2020-11-29 09:54:41 · 566 阅读 · 1 评论 -
C++中如何跳出当前代码块
问题实现类似如下跳出代码块功能但不使用goto:{ ... if(condition) goto pos_out; ...}pos_out:...解决方案[&](){ ... if(condition) return; ...}();参考文章How to jump out of a C++ code block?...转载 2020-11-26 08:28:13 · 746 阅读 · 0 评论 -
阅读、设计、编写、调试、提交代码经验
阅读代码经验看代码的过程中,注意记录自己的理解或画图,形成文档(不一定要正式文档); 标记代码的过程中最好不要用行号,可以以函数名进行定位; 阅读代码的时候,可以结合断点调试的方法加深对代码的理解; 在面对一个庞大的系统时,看代码往往不知道如何入手。如果一个类一个类地看,往往目的性差,而且对于系统有个功能实现的把握不强。推荐的方法:针对某个功能从前到后串着看,然后在一些节点上进行适当发散...原创 2019-12-14 22:45:01 · 249 阅读 · 0 评论 -
C++与字符集、字符编码
目录问题字符集字符编码字符集与字符编码的关系多种字符编码存在的意义字符编码的发展历史活动代码页c++的多字节字符与宽字节字符c++的多字节字符串与宽字节字符串C++程序输出字符串的编码字符串常量参考文章问题字符集和编码往往是IT菜鸟甚至是各种大神的头痛问题。当遇到纷繁复杂的字符集,各种火星文和乱码时,问题的定位往往变得非常困难。本...原创 2019-11-02 22:29:13 · 4930 阅读 · 1 评论 -
一点编码规范心得
断言使用断言信息打印问题代码int retVal1 = fun1();int retVal2 = fun2();assert(0 == retVal1 && 0 == retVal2);问题分析上述代码中,retValue返回函数执行的错误码。如果函数执行正确则返回0,否则返回相应的错误码。 该代码的问题在于如果发生断言之后,无法获得具体的错误原因。改进方法int retVal1 = fun1原创 2017-08-20 09:23:12 · 395 阅读 · 0 评论