摘要:开发中对于特定格式的日期和格式获取很常见,这里给出一系列工具函数: #include <time.h> #include <sstream> using namespace std; // time转格式化字符串 std::string ShowDateTime(const tm& t, const
阅读全文
随笔分类 - C++/C
摘要:Stevens的《Unix 环境高级编程》中第11章线程关于pthread_cond_wait的介绍中有一个生产者-消费者的例子P311,在进入pthread_cond_wait前使用while进行条件判断,而没有直接使用if,耐人费解! 代码如下: #include <pthread.h> str
阅读全文
摘要:pthread_cond_wait() 用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex配套使用。pthread_cond_wait()函数一
阅读全文
摘要:说明:所有内容翻译自spdlog的wiki,受英语水平所限,有所错误或失真在所难免,如果您有更好的建议,请在博文下留言。 线程安全 spdlog:: 命名空间下的是线程安全的,当loggers在不同的线程同时执行时,下述函数不应该被调用: spdlog::set_error_handler(log_
阅读全文
摘要:一、简介 spdlog是基于C++ 11的日志组件,它非常轻量,使用时你仅仅需要引入头文件就可以了。 https://github.com/gabime/spdlog https://github.com/gabime/spdlog/wiki/3.-Custom-formatting 二、线程安全
阅读全文
摘要:目录 处理高并发的库 日志 PRC 嵌入式文件系统 代码质量 深度学习库 HTTP 网络库 单元测试 性能测试 文件压缩 下次造轮子前先看看现有的轮子吧 值得学习的C语言开源项目
阅读全文
摘要:前言 Lambda(匿名函数)表达式是C++11最重要的特性之一,lambda来源于函数式编程的概念,也是现代编程语言的一个特点。 优点如下: 声明式编程风格:就地匿名定义目标函数或函数对象,有更好的可读性和可维护性。 简洁:不需要额外写一个命名函数或函数对象,,避免了代码膨胀和功能分散。 更加灵活
阅读全文
摘要:1: 输入二叉树的先序遍历序列和中序遍历序列,输出该二叉树的后序遍历序列。 第一行输入二叉树的先序遍历序列;第二行输入二叉树的中序遍历序列。 输出该二叉树的后序遍历序列。 ABDCEF BDAECF DBEFCA 代码: #include <iostream>#include<cstdio>#inc
阅读全文
摘要:函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。 其调用格式为:
阅读全文
摘要:1. 截取子串 s.substr(pos, n) //截取s中从pos开始(包括0)的n个字符的子串,并返回 s.substr(pos) //截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回 2. 替换子串 s.replace(pos, n, s1) //用s1替换s中从pos开始(包
阅读全文
摘要:一、vector 1.判断某元素是否存在 vector<string> vStr; int nRet = std::count(vStr.begin(), vStr.end(), "xiaochun" ); //判断vector中是否有 "xiaochun" 这个元素 2.查找某个元素 方法一: 自
阅读全文
摘要:在 C 语言中,可以采用命令 #define 来定义宏。该命令允许把一个名称指定成任何所需的文本,例如一个常量值或者一条语句。在定义了宏之后,无论宏名称出现在源代码的何处,预处理器都会把它用定义时指定的文本替换掉。关于宏的一个常见应用就是,用它定义数值常量的名称: #define ARRAY_SIZ
阅读全文
摘要:一、(#)字符串化操作符作用:将宏定义中的传入参数名转换成用一对双引号括起来参数名字符串。其只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前。 如: #define example( instr ) printf( "the input string is:\t%s\n", #instr
阅读全文
摘要:如何使用宏定义输出信息 C语言提供了#, ##, __VA_ARGS__等符号来帮助我们在宏定义中更好地输出信息。使用方式如下: 输出如下: #的作用是,它会在所引用的宏变量左右两边加一对引号。所以FUN1中的printf函数不会出错,因为FUN1(hello)预编译时被替换成了printf("he
阅读全文
摘要:今天在网上突然发现了下面几个关于c代码中的宏定义的说明,回想下,好像在系统的代码中也见过这些零散的定义,但没有注意,看到别人总结了下,发现果然很有用,虽然不知有的道可用与否,但也不失为一种手段,所以就先把它摘抄下来,增加一点见识:1,防止一个头文件被重复包含#ifndef BODYDEF_H#def
阅读全文
摘要:1、宏定义中#的使用在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。例: #define A(x) #x#define B(x, y) #x"."#y即 A(123) > "123" B(1
阅读全文
摘要:extern是什么及其作用 extern是c++引入的一个关键字,它可以应用于一个全局变量,函数或模板声明,说明该符号具有外部链接(external linkage)属性。也就是说,这个符号在别处定义。一般而言,C++全局变量的作用范围仅限于当前的文件,但同时C++也支持分离式编译,允许将程序分割为
阅读全文
摘要:1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a
阅读全文
摘要:在编写跨平台的程序时,我们经常使用预定义宏来检测编译环境。虽然编译器的手册中有预处理宏的介绍,但是不够详细,而且还有很多宏没有介绍。于是,我编写了一个小程序,显示常见C/C++编译器的编译器的预定义宏。 心得 最直接的办法是逐个逐个的用#ifdef判断宏是否存在,然后再printf显示其内容。可是预
阅读全文
摘要:C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号
阅读全文