C++
文章平均质量分 54
Qt君
生命不息,奋斗不止!
展开
-
if语句使用建议
if语句内的判断的类型应该是布尔类型,使用非布尔类型判断非常容易出错。比如: 下面代码判断字符串不相同,很自然就用了逻辑!,实际上用法是错误的。if (!strcmp(str1, str2)) { } 因为strcmp返回的是int类型:如果返回值小于0,则表示str1小于str2。如果返回值等于0,则表示str1等于str2。如果返回值大于0,则表示str1大于str2。不要使用双重否定,因为它会让人多做思考,不够直观。比如: 判断两个字符串是否相等,你会发现,增加了!判.原创 2021-11-18 22:54:16 · 2107 阅读 · 0 评论 -
分享一个HTTP服务器和客户端库
cpp-httplib是一个C++11跨平台HTTP/HTTPS库。该库使用非常方便,只需要包含httplib.h文件即可!原创 2021-01-23 23:52:53 · 59 阅读 · 0 评论 -
字符串使用的小误区
一不小心就踩坑了。原创 2020-01-06 00:29:14 · 205 阅读 · 0 评论 -
int* i和int *i那种更好
你认为那个更好?原创 2019-12-18 23:41:35 · 847 阅读 · 0 评论 -
总结if/elif/else/endif宏之间的嵌套关系
先前写的一个工具(Qml宏预处理工具)就顺便总结一下if/elif/else/endif之间的嵌套关系,并整理成表。原创 2019-11-12 23:34:11 · 1651 阅读 · 0 评论 -
使用boost库实现的CRC64示例
网上比较多的CRC16,CRC32校验实现,但CRC64却很难找,最近也有用到,所以特意地写一个CRC64示例分享给大家。原创 2019-10-30 23:54:20 · 398 阅读 · 0 评论 -
不报错地调用空指针类的成员函数
究竟什么原因使得空指针实例调用成员函数也能正常运行?原创 2019-10-23 23:34:41 · 367 阅读 · 0 评论 -
C++替代关键词(and,or,not)
下列例子用到了C++的关键词and,not,虽然这种做法比较少用,但它可读性比||和!会好很多。原创 2019-10-22 23:25:45 · 8618 阅读 · 0 评论 -
qDebug | std::cout | printf性能表现
Qt君最近感觉qDebug相对于printf打印感觉有些慢,但又没有证据,于是闲着就写下qDebug,std::cout,printf的性能表现咯。注:测试数据仅供参考。原创 2019-10-17 19:47:38 · 1437 阅读 · 2 评论 -
Qt学习笔记
总结开发过程中好用的知识点。原创 2019-10-12 23:44:34 · 428 阅读 · 0 评论 -
ShellCommand命令执行器
基于Qt写的shell命令执行器原创 2019-01-10 21:02:12 · 1463 阅读 · 0 评论 -
C/C++魔法宏
1. 魔法宏_LINE_ : 代表该行代码的所在行号;_FILE_ : 代表源文件的文件名;_DATE_ : 代表该源文件被编译的(月 日 年)日期格式;_TIME_ : 代表该源文件被编译的(时:分:秒)时间格式;_FUNCTION_ : 代表该源代码中插入当前所在函数名称;_STDC_ : 当该程序严格遵循ANSI C标准时该标识被赋值为1;__cplusplus:当编写的...原创 2019-01-17 22:43:42 · 487 阅读 · 0 评论 -
C++11之右值引用
C++11新增了右值引用,使用&&表示。如:int &&r1 = 1;int x = 2;int y = 3;int &&r2 = x + y;我们可以通过r1来修改1的值,使用起来方便。...转载 2019-01-07 22:06:13 · 159 阅读 · 0 评论 -
C/C++之switch范围判断
1. switch范围判断用法,使用’…'符#include <iostream>int main(int argc, char *argv[]){ int i = 5; switch (i) { case 0 ... 3: std::cout<<"0-3: "<<i<<std::e...原创 2019-01-18 21:48:16 · 11146 阅读 · 6 评论 -
C语言之变参数宏代替printf
#define LOG( format, ... ) printf( format, __VA_ARGS__ )1 VA_ARGSVA_ARGS是系统预定义宏,被自动替换为参数列表经常需要进行输出格式化,重定义操作时,可以使用以上技巧;2 示例代码#include <stdio.h>#define LOG( format, ... ) printf( form...原创 2019-01-20 22:46:27 · 748 阅读 · 0 评论 -
断言宏assert
assert()宏主要用于辅助测试程序;assert()宏当表达式求值为假(非零)时,assert()宏就在标准错误流(stderr)写入一条错误信息(包括出错文件与行号)并调用abort()函数终止程序;头文件assert.h源代码 #if defined(_UNICODE) || defined(UNICODE)#define assert(_Expression) \ (vo...原创 2019-01-27 21:33:20 · 558 阅读 · 0 评论 -
C/C++宏之#与##
'#'为将其后面的宏参数进行字符串化操作, '##'为连接符,主要用于减少代码密度。原创 2019-01-16 23:06:27 · 1820 阅读 · 0 评论 -
C++中异常处理的使用见解
C++内置的异常处理语法try catch用法,在某种情况下使用异常处理可以使代码更加简洁.不使用异常的伪代码if (file.read(userName) == 0) { processUserName(userName); if (file.read(number) == 0) { processNumber(number); } e...原创 2019-02-04 20:03:41 · 316 阅读 · 0 评论 -
C语言逗号运算符
逗号运算符表达式取最后一个值返回。特点优先级别最低;自左往右执行表达式;返回值为表达式最后一个.例子1输出: 5printf("%d", (1, 2, 3, 4, 5));例子2赋值运算符优先级高于逗号运算符;先执行i=3*3后再执行i*5;输出: 45.int i = 0;printf("%d\n", (i = 3*3 , i*5));例子3输...原创 2019-02-21 21:36:06 · 12090 阅读 · 6 评论 -
使用C++模板获取数组长度
利用模板的特性,在编译期就获取到数组长度.模板函数GetArrayLengthtemplate <typename T, size_t N>inline size_t GetArrayLength(const T(&)[N]){ return N;}示例int array[] = {0, 1, 2, 3, 4, 5};cout <&l...原创 2019-02-28 22:06:49 · 2007 阅读 · 1 评论 -
C/C++黑魔法-神奇蝌蚪运算符
C/C++存在一种神奇的生物-蝌蚪.蝌蚪(运算符)游向该变量自动加1,游离则自动减1.原创 2019-03-05 14:04:45 · 682 阅读 · 0 评论 -
c++作用域解析运算符(::)
域名::函数或类型定义表示定义某个域的函数或类型;Test::Test()引用Test类的Test()构造函数;例:class Test { Test();};Test::Test() {}::函数或类型调用表示调用全局的函数或类型;::value引用全局变量;例:#include <iostream>using namespace s...原创 2019-03-02 20:44:51 · 5305 阅读 · 4 评论 -
C/C++趋向运算符
趋向运算符主要由`-->`或`<--`组成,让一个变量趋向于某个值.原创 2019-03-03 22:13:03 · 1895 阅读 · 4 评论 -
解决使用ptlib库编译"realloc"参数不足问题
解决使用ptlib库导致的编译错误qlist.h(98): warning C4003: 类函数宏的调用“realloc”参数不足的问题。原创 2019-03-13 21:45:35 · 871 阅读 · 0 评论 -
C/C++黑魔法-不会出错的http
在C99标准中,可以直接将URL嵌入到函数内的源代码中原创 2019-03-09 22:05:17 · 328 阅读 · 0 评论 -
C/C++黑魔法-编译期运行的sizeof
本文介绍sizeof内执行的表达式会在编译期运行原创 2019-03-10 22:09:45 · 771 阅读 · 0 评论 -
C/C++黑魔法-自动关闭文件描述符
利用宏与for循环特性自动关闭文件描述符,用来避免用户经常忘记关闭文件描述符的问题。原创 2019-03-15 22:05:14 · 940 阅读 · 0 评论 -
C/C++黑魔法-防御性编程
在使用常数作为比较的时候往往会将x == 0写作x = 0,会使得程序陷入错误,由此我们可以使用编译器特性。原创 2019-03-16 17:31:25 · 467 阅读 · 0 评论 -
C++接口隔离示例(设计模式)
本文介绍C++设计模式中的接口隔离示例。使用接口隔离独立性好,且只限于它的接口(单一性原则)。原创 2019-03-20 21:09:57 · 1268 阅读 · 0 评论 -
C/C++黑魔法-常量字符串连接
使用方便的字符串常量连接。原创 2019-03-24 21:20:32 · 957 阅读 · 0 评论 -
C语言骚操作之没有加法运算符
利用数学运算符实现不使用加法运算符实现加法的操作。原创 2019-03-21 21:39:56 · 353 阅读 · 0 评论 -
C/C++黑魔法-没有临时值的交换
使用XOR异或运算符可以做的一件很酷的事情"没有临时值的交换"。原创 2019-03-18 21:35:44 · 231 阅读 · 0 评论 -
解决一个运行时错误的问题
解决由于程序删除内存方式写得不恰当导致的运行时错误。原创 2019-03-22 21:13:44 · 6037 阅读 · 0 评论 -
C/C++黑魔法-三字母彩蛋
三字母(`trigraphs`)使用三个特殊的符号解析为对应符号的例如`??(`映射为`]`原创 2019-03-31 22:47:33 · 569 阅读 · 0 评论 -
C/C++黑魔法-编译期断言
今天查看内核源码,出现一个很奇怪的用法。可以在静态编译期的断言。1. 内核源码kernel.hBUILD_BUG_ON_ZERO判断表达式非零值编译器报错;BUILD_BUG_ON_NULL判断表达式指针地址非空报错。/* Force a compilation error if condition is true, but also produce a result (of...原创 2019-04-06 22:10:10 · 355 阅读 · 0 评论 -
C/C++黑魔法-另类switch
介绍duff写法与范围判断原创 2019-03-28 22:17:45 · 469 阅读 · 0 评论 -
向上/向下取整与四舍五入
向上取整为存在大于0的小数位该数+1;向下取整为存在大于0的小数位该数-1;四舍五入为小数大于5的+1.原创 2019-04-02 22:18:25 · 4618 阅读 · 0 评论 -
C/C++黑魔法-三元运算符简洁写法
条件运算符也称为三元运算符。我们主要以下列形式使用它:x = (y < 0) ? 1 : 2;但是在C++中,您还可以通过以下方式使用它:(c < 0 ? a : b ) = 1; // 如果c < 0则a = 1; 如果c > 0则b = 1...原创 2019-04-20 22:50:39 · 4795 阅读 · 0 评论 -
C语言之变参数宏代替printf
#define LOG( format, ... ) printf( format, __VA_ARGS__ )1 VA_ARGSVA_ARGS是系统预定义宏,被自动替换为参数列表经常需要进行输出格式化,重定义操作时,可以使用以上技巧;2 示例代码#include <stdio.h>#define LOG( format, ... ) printf( form...原创 2019-04-16 20:41:52 · 662 阅读 · 0 评论 -
C/C++黑魔法-字符串分割
方便地将字符串分割。字符串使用字符指针偏移的方法分割printf("%s\n", "123456789" + 3); // 输出:456789或const char *str = "123456789";printf("%s\n", str + 3); // 输出:456789...原创 2019-04-17 22:12:56 · 481 阅读 · 0 评论