c++
文章平均质量分 72
chaos-god
弃我去者昨日之日不可留,
乱我心者今日之日多烦忧。
长风万里送秋雁,对此可以酣高楼。
蓬莱文章建安骨,中间小谢又清发。
俱怀逸兴壮思飞,欲上青天揽明月。
抽刀断水水更流,举杯销愁愁更愁。
人生在世不称意,明朝散发弄扁舟。
展开
-
C++学习:Effective Modern C++条款
条款1:理解模板类型推导推导模版类型时,引用的值视为非引用,即忽略引用。推导通用引用类型参数时,左值特殊处理。推导传值参数时,忽略const和volatile。+推导模版类型时,参数是数组或函数名则退化为指针,除非用来初始化引用。条款2:理解auto类型推导推导auto类型一般和推导模版类型是一致的,但auto类型推导对于大括号初始化{}会推导为std::initializer_list,模版类型推导则不会。做为函数返回类型或lambda参数中的auto类型推导意味着模版类型推导,而不做原创 2021-06-11 23:03:56 · 830 阅读 · 2 评论 -
C++20学习:concept用法介绍
概述众所周知,C++的泛型强大,很多语言都学了,比如C#、Java,虽然Java的泛型只是语法糖,不值得一提。C++的template实际上是创造了一种新的语言,这个语言是编译期的,相当于编译器把代码解释成C++语言,然后再编译成机器指令。STL的诞生,是颠覆性的创举,然而STL所用到的泛型还只是C++template中其中一部分特性。C++使用template实现泛型算法,我们来看下一个简单的例子。template<typename T>T inc(T a){ return原创 2021-01-17 17:01:00 · 1604 阅读 · 2 评论 -
C++20学习:基于Ubuntu系统编译gcc10.2.0
问题c++20标准已经发布,c++20有比较多的新特性。想尝个先,虽然目前还没有一个编译器能够完全支持c++20标准。gcc和clang编译支持c++20多一些,gcc支持最好。安装Ubuntu系统20.0.4,自带的gcc都还不支持c++20。需要使用最新的gcc10.2.0版本,需要编译。于是自己动手。编译gcc1.下载最新的gcc10.2.0访问:https://gcc.gnu.org/mirrors.html,找个镜像金星下载gcc2.解压缩我下载的是xz文件,需要先试用x原创 2021-01-15 23:42:03 · 3888 阅读 · 1 评论 -
C++20学习:基于ubuntu编译log4cxx
1.问题java中,log4j库非常好用,支持性也非常广泛。c++中,是否也有类似的库?最好能够夸语言互通。2.方案一般优秀的库,其他语言应该都会借鉴,实现不同语言版本。通过搜索,c++的log有好几个版本,比如log4cpp,log4cxx,log4cplus等。本文采用log4cxx库,因为它是log4j同源的。2.1.环境准备ubuntu 20.0.4 gcc gcc 10.2.0(可以用自带的gcc版本) 下载log4cxx:http://logging.apache.org原创 2021-01-15 22:38:02 · 662 阅读 · 1 评论 -
C++学习:string构造函数的bug
c++中,有时需要调用c语言函数,要把char*转换成stl的string,但使用过程,就出现问题。比如下面代码,就会导致程序coredump。不同的版本,可能结果不同。xcode9.x和vs2005所使用的编译器的都出现这个问题。#include using namespace std;const char* get_cstr(void){ return 0;}int ma原创 2016-05-07 14:46:35 · 813 阅读 · 0 评论 -
C++学习:使用libssh2实现交互式shell的ssh2,linux和windows通用
使用ssh2实现shell自动化测试,实际工作中遇到非常多。各种语言都有相应的库可以使用。比如,c/c++语言可以使用libssh2;python可以使用paramkio库等。但这些库网上的帮助,都不是很全,都比较浅显。shell自动化,最基本的三个需求,一个是适合多重类型的操作系统;二是要能够支持交互式shell,比如使用sudo执行时,需要输入密码;三是读数据时要非阻塞的。原创 2015-04-05 16:51:22 · 26347 阅读 · 6 评论 -
C++11:OpenSuSe11下编译gcc 4.7.1
C++11发布有了一年,一直没有激情来学习新的特性。GCC 4.7.1编译器也是支持C++11比较好的编译器。本帖简单把GCC编译器,在OpenSuSe11编译的过程给纪录下来,以供自己或大家参考。这里的过程,也是网上搜索的,尝试编译成功,在此向他们表示感谢,在后文列出链接。 GCC 4.7.1版本编译需要三个库,GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+,原创 2012-08-15 21:52:54 · 1641 阅读 · 0 评论 -
C++11:SuSe Linux和Mac系统编译gcc 4.8.1
1、下载gcc 4.8.1源码包:http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.1/gcc-4.8.1.tar.bz22、解压:tar -jxvf gcc-4.8.1.tar.bz23、下载编译所需的依赖包:这个步骤有两种方式完成:a) 如果Linux有网络连接,直接这原创 2013-10-23 01:06:04 · 2451 阅读 · 0 评论 -
C++11:nullptr
0.NULL的前世今生对于C和C++程序员来说,一定不会对NULL感到陌生。但是C和C++中的NULL却不等价(别惊讶,这是真的)。NULL表示指针不指向任何对象,但是问题在于,NULL不是关键字,而只是一个宏定义(macro)。在C中,习惯将NULL定义为void*指针值0:#define NULL (void*)0但同时,也允许将NULL定义为整常数0原创 2013-10-23 01:02:28 · 1588 阅读 · 0 评论 -
C++学习:一个通用ini配置文件操作类
在windows平台下,简单的程序可以通过ini文件实现简单的配置,简单适用。在win32 sdk还提供了相应的api来读取修改ini文件。ini配置文件格式为:[section]key=string...读取与修改string的api为ReadPrivateProfilesString和WritePrivateProfilesString。不过美中不足的是,win32 api并没原创 2012-09-30 10:59:06 · 3793 阅读 · 1 评论 -
C++学习:通过管道进行cmd进程输入输出重定向
在日常的工作中,shell使用比较多,尤其在软件测试过程中,但使用手工操作既麻烦,又记不住命令,关键是不能自动化。众所周知,linux或者windows系统的shell都是可以进行输入输出重定向的,利用输入输出重定向技术,把shell的输入输出映射到自己所写的进程里,这样就很方面了。比如要使用ssh2远程一个linux机器,就需要自己实现ssh2客户端的协议,使用重定向,就可以直接使用操作系统自带原创 2012-08-25 22:48:41 · 9418 阅读 · 10 评论 -
C++学习: int2str,int2str类型转换
在日常工作中,类型转换用得比较多,尤其是int转换string类型,string转换成int类型。c/c++支持多种转换方式,C语言提供函数库,c/c++提供流,还可以提供自己写的转换版本。使用C语言版的函数,如下写法: string int2str(int val){ char buf[64] = ""; _snprintf(buf, sizeof(b原创 2012-08-18 13:10:24 · 13045 阅读 · 0 评论 -
C++学习:一个简单适用的跨平台Log类(1)
本文开发一个简单适用的日志类Log,讲述C++一些比较好玩的特性,template、策略类、多线程锁、单件、函数可变参数等的方法。涉及的东西比较多,可能一篇写不完。在开始Log类之前,先讲解几个简单的class,这些class往往比较小,完成单一的功能,利用C++多重继承机制,把这些小类拼装成比较复杂的类。这些小class,称为策略类。枯燥无味的概念不是重点,《C++设计新思维》的原创 2012-08-22 00:28:09 · 1632 阅读 · 0 评论