c++
一路奔跑94
业精于勤荒于嬉,行成于思毁于随!
展开
-
腾讯研发类笔试面试试题(C++方向)
1、C和C++的特点与区别?答:(1)C语言特点:1.作为一种面向过程的结构化语言,易于调试和维护;2.表现能力和处理能力极强,可以直接访问内存的物理地址;3.C语言实现了对硬件的编程操作,也适合于应用软件的开发;4.C语言还具有效率高,可移植性强等特点。(2)C++语言特点:1.在C语言的基础上进行扩充和完善,使C++兼容了C语言的面向过程特点,又成为了一种面向对象的程序设计语言...转载 2018-07-25 15:17:30 · 567 阅读 · 0 评论 -
C++ 多态的实现及原理(虚函数与纯虚函数)
C++的多态性用一句话概括就是:在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据对象的实际类型来调用相应的函数。如果对象类型是派生类,就调用派生类的函数;如果对象类型是基类,就调用基类的函数 1:用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。 2:存在虚函数的类都有一个一维的虚函数表叫做虚表,类的对象有一个指向虚表开始的虚指针。虚...转载 2019-03-06 10:54:41 · 307 阅读 · 0 评论 -
CLion 实现远程调试
CLion 是 JetBrains IDE 全家桶产品之一,可以用来开发 C/C++ 项目,而 GDB 则可以用来对 C/C++ 程序进行调试。作为一款调试器,GDB 为程序开发人员提供了强大的调试功能,但却需要使用命令来执行调试操作,操作起来不是很方便。(有关 GDB 的使用,可以参考文章《GDB 调试》。)为此,CLion 为程序开发人员提供了图形化的调试界面以方便调试。另外,CLion ...转载 2019-03-29 14:30:06 · 17606 阅读 · 3 评论 -
使用cJson 报错:cJSON.c:(.text+0x4aa): undefined reference to `pow'
编译报错:原因:使用了#include<math.h>忘记了链接动态库 加一个-lm 即可,小问题记录一下,最近记性不好…………顺带加一个cJson 的源码地址:https://sourceforge.net/projects/cjson/?source=directory...原创 2019-04-19 15:56:04 · 4486 阅读 · 1 评论 -
Linux下如何查看系统启动时间和运行时间以及安装时间
1.uptime命令输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.002.查看/proc/uptime文件计算系统启动时间cat /proc/uptime输出: 5113396.94 575949.85第一数字即是系统已运行的时间5113396.94 秒,运用系统工具date即可算出系统启动时间...转载 2019-05-10 18:30:29 · 637 阅读 · 0 评论 -
值得推荐的C/C++框架和库 (真的很强大)
值得学习的C语言开源项目- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz2...转载 2019-06-06 14:31:03 · 2436 阅读 · 1 评论 -
C语言实现HTTP的GET和POST请求
HTTP请求和IP/TCP所谓的HTTP协议是基于IP/TCP协议的, 所以要获取远端的html数据只要创建socket对象就足够了;HTTP是基于IP/TCP加上了网络请求的固定格式get 请求#include <stdio.h>#include <sys/socket.h>#include <sys/types.h>#include ...转载 2019-06-06 17:28:11 · 26497 阅读 · 1 评论 -
C/C++使用libcurl库发送http请求
C++要实现http网络连接,需要借助第三方库,libcurl使用起来还是很方便的环境:win32 + vs2015如果要在linux下使用,用cmake编译,使用基本同理1,下载编译libcurl下载curl源码,找到vs工程,按照x86 x64 并对应debug和release编译出静态库lib2,构建工程1)curl头文件和lib拷贝到工程目录2)配置...转载 2019-06-10 15:38:45 · 1166 阅读 · 0 评论 -
Size_t和int区别
(1)size_t和intsize_t是一些C/C++标准在stddef.h中定义的。这个类型足以用来表示对象的大小。size_t的真实类型与操作系统有关。在32位架构中被普遍定义为:typedef unsigned int size_t;而在64位架构中被定义为:typedef unsigned long size_t;centos7 64bit...转载 2019-07-01 11:39:37 · 4708 阅读 · 0 评论 -
Makefile 编译各个子目录下的Makefile文件
首先说说本次嵌套执行makefile文件的目的:只需make根目录下的makefile文件,即可编译所有c文件,包括子目录下的。意义:自动化编译行为,以后编译自己的c文件时可把这些makefile文件直接复制到相应目录即可方便编译出所有文件。这些makefile文件是通用的,只需根据自己的工程情况改动少许内容即可。下面会说。总体思路是:把目标文件放在debug文件夹下的obj目录下,把最终...原创 2019-07-27 16:59:02 · 14748 阅读 · 0 评论 -
浅谈C++ STL 容器
什么是容器首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对 象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法,因为这些方法在程序的设计上会经常被用到,所以容器也体现了一个好处, 就是“容器类是一种对特定代码重用问题的良好的解决方案...转载 2019-02-28 16:32:20 · 219 阅读 · 0 评论 -
pthread_mutex_t 和 pthread_cond_t 配合使用的简要分析
1.原理假设有两个线程同时访问一个全局变量 n,这个全局变量的初始值等于0。Int n = 0 ; 消费者线程 A 进入临界区,访问 n,A 必须等到 n 大于 0 才能接着往下执行,如果 n== 0,那么 A 将一直等待。 还有一个生产者线程 B,B 进入临界区,修改 n 的值,使得 n >0,当 n > 0 时,B 通知等待 n &...转载 2018-12-26 10:27:46 · 655 阅读 · 0 评论 -
gcc -I -L -l区别
我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:例子1:gcc -o example1 example1.c -I /usr/local/include/freetype2 -lfreetype -lm上面这句话在编译example1.c 时,-I /usr/local/include/freetype2 表示将/us...转载 2018-08-14 14:45:41 · 57488 阅读 · 5 评论 -
使用cJSON解析JSON字符串
使用cJSON解析JSON字符串 一、为何选择cJSON 我们在使用JSON格式时,如果只是处理简单的协议,可以依据JSON格式,通过对字符串的操作来进行解析与创建。然而随着协议逐渐复杂起来,经常会遇到一些未考虑周全的地方,需要进一步的完善解析方法,此时,使用比较完善的JSON解析库的需求就提出来了。 基于方便引用的考虑,我们希望这个JSON解析库...转载 2018-09-03 09:30:55 · 767 阅读 · 0 评论 -
C++项目中的extern "C" {}
引言在用C++的项目源码中,经常会不可避免的会看到下面的代码:C++ 1 2 3 4 5 6 #ifdef __cplusplus extern "C" { #endif /*...*/ #ifdef __cplusplus } #endif它到底有什么用呢,你...转载 2018-10-25 14:03:23 · 5710 阅读 · 0 评论 -
"undefined reference to" 问题解决方法
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(.o)...转载 2018-11-26 11:00:58 · 1339 阅读 · 0 评论 -
Stringstream 缓冲区清空方法 和 复用StringStream 不是clear那么简单
最近编写程序时用到 int类型-->string类型的东西,后来发现结果老是有点不对。现在才知道是Stringstream 惹的祸。用clear的话,内存会不断增长。在for循环中每次调用strStream.clear()是希望在每次使用完strStream之后清理strStream占用的资源,但stringstream的clear方法并没有真正地释放strStream占用的空间,...转载 2018-11-26 13:54:45 · 423 阅读 · 0 评论 -
c++ %d-%d-%d %d:%d:%d 转unix时间戳
最近的业务,需要用到string转UNIX时间戳,记录一下实现过程c++代码如下:#include <stdio.h> #include <memory.h>#include <iostream> #include <ctime>#include <string> time_t strTime2unix(st...转载 2018-12-19 14:04:20 · 639 阅读 · 0 评论 -
ASN1_TIME 和 TIME_T转换
Openssl 代码中提供了函数 ASN1_TIME_set ,把 time_t 格式的时间转化为 ASN1_TIME函数原型为ASN1_TIME *ASN1_TIME_set(ASN1_TIME *s, time_t t)但是没有找到类似 ASN1_TIME_get 函数,把 ASN1_TIME 转化为 time_t下面是一个ASN1_TIME_get 测试可用int my...原创 2018-12-27 17:34:45 · 5137 阅读 · 0 评论 -
OpenSSL 常用函数——证书操作
OpenSSL 常用函数——证书操作现有的证书大多采用X. 509规范,主要由以下信息组成:版本号、证书序列号、有效期、所有者信息、发行者信息、其他扩展信息、所有者公钥、CA的上述信息签名。一种OpenSSL实现了对X. 509的所有数字证书操作。它包括发放数字证书、解析和验证证书等一种证书操作涉及的主要功能有证书验证(证书链、有效期、CRL)、证书解析(证书版本、序列号、发行人信息、主体信息...转载 2018-12-27 20:39:20 · 1898 阅读 · 0 评论 -
一个小错误: deprecated conversion from string constant to char*错误的修改
当我们将一个character pointer variable 初始化成一个string literal的时候, 就会出现此类错误。在最新的C标准或者C++标准中, 使用如下语句, 无论使用gcc 或者g++命令, 都会报出上面的错误, 不能通过编译: char* x = "hello";修改方案如下。sol1: char* 改为const char* 修饰即可:&l...转载 2018-12-25 21:10:39 · 529 阅读 · 0 评论 -
Makefile之patsubst
经常要手写项目的Makefile,或者看其他项目的遗留项目的Makefile,有些makefile内置函数常用,却用完就忘记了,最近项目中使用patsubst,感觉挺好用的格式:$(patsubst <pattern>,<replacement>,<text> )名称:模式字符串替换函数——patsubst。功能:查找<text...转载 2019-07-28 14:45:13 · 517 阅读 · 0 评论