C/C++
文章平均质量分 56
fengruoying93
这个作者很懒,什么都没留下…
展开
-
source insight使用正则表达式进行字符串替换
例如:替换前:memset_s(str, sizeof(str), 0);替换后:memset_s(str, sizeof(str), 0, sizeof(str));search - replase files :勾选使用正则表达式old: memset_s(\(.+\),\(.+\),\(.+\))new:memset_s(\1,\2,\3,\2)原创 2022-04-02 17:09:08 · 845 阅读 · 0 评论 -
win32获取屏幕分辨率和鼠标位置
#include "stdafx.h"#include <stdio.h>#include <string.h>#include <stdlib.h>#include <locale.h>#include <algorithm>#include <iostream>#include <string>using namespace std;VOID CALLBACK Timer(HWND, UINT, .原创 2022-03-01 17:00:23 · 1567 阅读 · 0 评论 -
eXosip2和osip2库编译
参考:https://blog.csdn.net/takeopen/article/details/79564185一、源码下载http://www.antisip.com/download/exosip2/,这里选择libeXosip2-3.5.0.tar.gz和libosip2-3.5.0.tar.gz二、osip2库编译cd libosip2-3.5.0/./configure --enable-staticmake编译完成后在libosip2-3.5.0/src/osip2原创 2021-05-23 21:54:19 · 1105 阅读 · 1 评论 -
vs code配置C/C++环境
参考:https://blog.csdn.net/dtw11502/article/details/80798167https://blog.csdn.net/bat67/article/details/76095813一、安装C/C++插件1、在线安装方法:在vs code左侧导航栏点击Extensions,搜索插件名称并安装即可,安装后会自动下载安装c/c++ language components2、离线安装方法:(1) 打开 VSCode 插件市场网址https://marke.原创 2021-05-06 19:10:33 · 137 阅读 · 0 评论 -
一些音视频编解码相关的开源库
参考:https://www.cnblogs.com/cyblogs/p/10722306.htmlhttps://blog.csdn.net/fanyun_01/article/details/103565661不管视频编解码,图像编解码,音频编解码,都有很多组织基金在推动。当然,在一些特定的情景下,需要用起来编解码库,而一般这些库都会有编译困难,使用困难等等困难综合症。图像方面,已经有stb_image,spot,freeimage等编解码库系列,做得特别赞。https://gi转载 2021-04-24 11:39:22 · 3188 阅读 · 0 评论 -
C语言读取MP3文件id tag计算播放时长
#include<stdio.h>#include<string.h>#include<stdlib.h>#include<sys/io.h>#define SEEK_END 2void main(){ FILE *fp; int bHasID3V2; char cVer; char cRevision; int bHasExtHeader=0; int ID3V2_size; #define ID3V1_size 128 c.转载 2021-03-11 21:54:28 · 1359 阅读 · 0 评论 -
C++中类成员函数作为回调函数
注:与tr1::function对象结合使用,能获得更好的效果,详情见http://blog.csdn.net/this_capslock/article/details/38564719回调函数是基于C编程的Windows SDK的技术,不是针对C++的,程序员可以将一个C函数直接作为回调函数,但是如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递一个指向自身的指针给其成员函数从..转载 2021-01-31 20:51:44 · 465 阅读 · 0 评论 -
Unicode与UTF-8互转(C语言实现)
1. 基础1.1 ASCII码我们知道, 在计算机内部, 所有的信息最终都表示为一个二进制的字符串. 每一个二进制位(bit)有0和1两种状态, 因此八个二进制位就可以组合出 256种状态, 这被称为一个字节(byte). 也就是说, 一个字节一共可以用来表示256种不同的状态, 每一个状态对应一个符号, 就是256个符号, 从 0000000到11111111.上个世纪60年代, 美国制定了一套字符编码, 对英语字符与二进制位之间的关系, 做了统一规定. 这被称为ASCII码, 一直沿用至..转载 2020-11-22 16:24:59 · 1121 阅读 · 0 评论 -
Linux下死锁问题的排查方法
一、什么是死锁死锁(DeadLock)是指两个或者两个以上的进程(线程)在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。由于资源占用是互斥的,当某个进程提出申请后,使得有关进程(线程)在无外力协助下,永远分配不到必需的资源而无法继续进行,这就产生了一种特殊现象——死锁。一种交叉持锁死锁的情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被其他线程转载 2020-11-15 12:08:36 · 4039 阅读 · 0 评论 -
在Linux中利用backtrace信息解决程序崩溃问题
转自:https://blog.csdn.net/jxgz_leo/article/details/53458366一、导读在程序调试过程中如果遇到程序崩溃死机的情况下我们通常多是通过出问题时的栈信息来找到出错的地方,这一点我们在调试一些高级编程语言程序的时候会深有体会,它们通常在出问题时会主动把出问题时的调用栈信息打印出来,比如我们在eclipse中调试java程序时。当这些换到Linux上的C/C++环境时情况将变的稍微复杂一些,通常在这种情况下是通过拿到出问题时产生的core文件然后再利用转载 2020-11-15 11:40:01 · 697 阅读 · 0 评论 -
技术干货丨通过wrap malloc定位C/C++的内存泄漏问题
摘要:用C/C++开发的程序执行效率很高,但却经常受到内存泄漏的困扰。本文提供一种通过wrap malloc查找memory leak的思路。用C/C++开发的程序执行效率很高,但却经常受到内存泄漏的困扰。本文提供一种通过wrap malloc查找memory leak的思路,依靠这个方法,笔者紧急解决了内存泄漏问题,避免项目流血上大促,该方法在日后工作中大放光彩,发现了项目中大量沉疴已久的内存泄漏问题。什么是内存泄漏?动态申请的内存丢失引用,造成没有办法回收它(我知道杠jing要说进程退出.转载 2020-11-11 16:21:51 · 438 阅读 · 0 评论 -
十进制和二进制数字转换
1、实现代码#include <iostream>#include <string>#include <vector>using namespace std;//十进制数字转二进制字符串void D2B(int in, string &out){ int shang, yu; vector<int> array; while(in/2 != 0){ shang = in/2; yu = in%2; array.原创 2020-11-08 14:33:30 · 155 阅读 · 0 评论 -
VS添加静态库
VS2013添加静态库如果想要使用静态库,需要头文件、和一个lib文件。头文件添加:项目-》右键添加现有项,加入解决方案中,将头文件包含即可文件.lib添加有两种方式:(1) 将静态库放置到文件生成路径 Release/Debug中(只要项目已经包含的路径即可),然后使用命令#pragma comment (lib,“动态库名.lib”)就能成功使用该静态库(2) 项目-》右键属性-》链接器-》常规-》附加库目录 添加lib文件路径项目-》右键属性-》链接器-》输入-》附加依赖项 添加lib文转载 2020-11-01 21:48:39 · 2294 阅读 · 0 评论 -
C++析构函数为什么要为虚函数
注:本文内容来源于zhice163博文,感谢作者的整理。1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 下面转自网络:源地址http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html a.第一段代码#include<iostream>using namespace std;class ClxBase{public: ClxBase() .转载 2020-10-08 18:00:11 · 620 阅读 · 0 评论 -
C++ instance单例模式
1、test.h#pragma once#include <string>class Student{public: Student(); Student(int age, std::string name); static int create_instance(); static void destroy_instance(); static Student *get_instance() { return m_instance; } void sh原创 2020-10-08 17:15:16 · 8370 阅读 · 0 评论 -
C++中list用法详解
1.关于list容器list是一种序列式容器。list容器完成的功能实际上和数据结构中的双向链表是极其相似的,list中的数据元素是通过链表指针串连成逻辑意义上的线性表,也就是list也具有链表的主要优点,即:在链表的任一位置进行元素的插入、删除操作都是快速的。list的实现大概是这样的:list的每个节点有三个域:前驱元素指针域、数据域和后继元素指针域。前驱元素指针域保存了前驱元素的首地址;数据域则是本节点的数据;后继元素指针域则保存了后继元素的首地址。其实,list和循环链表也有相似的地方,即:头节转载 2020-08-25 15:58:04 · 3865 阅读 · 0 评论 -
utf8编码与GB2312编码的转换(C++)
#include "stdafx.h"#include <windows.h>#include <iostream>#include <string>#include <string.h>#include <stdlib.h>using namespace std;//UTF-8到GB2312的转换char* U2G(const char* utf8){ int len = MultiByteToWideChar(CP_U.转载 2020-07-04 16:19:29 · 1608 阅读 · 0 评论 -
【MFC】CString 与 string 间的转换
宽字节字符集(Unicode)、多字节字符集(Multi-Byte) 自适应:CString 转 stringCString cstrTest = _T("test");string strTest;string = CT2A(cstrTest.GetString());string 转 CStringstring strTest="test";CString cstrTest;cstrTest= CA2T(strTest.c_str());这里使用的方法是ATL字符串转转载 2020-07-04 16:14:09 · 1719 阅读 · 0 评论 -
C/C++编译问题
一、C/C++混合编程出现:预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)问题参考:https://blog.csdn.net/puppet_master/article/details/47682375error:预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)英文版:fatal error C1853: 'pjtname.pch' precompiled header file is from a previous转载 2020-06-24 21:25:04 · 706 阅读 · 0 评论 -
VC++ HTTP/HTTPS文件下载
#include <afxinet.h>BOOL HttpDownload(const CString& strFileURLInServer, const CString & strFileLocalFullPath)//存放到本地的路径{ ASSERT(strFileURLInServer != ""); ASSERT(strFileLocalFullPath != ""); CInternetSession session; CHttpConnection* .转载 2020-06-21 12:15:04 · 920 阅读 · 0 评论 -
基于mongoose的httpclient配置SSL与cookie
一、mongoose简介mongoose是一个轻量的开源http服务器项目:https://github.com/cesanta/mongoose只需要使用mongoose.c和mongoose.h两个文件就可以搭建httpserver或httpclient二、SSL配置若要支持https,则需要配置SSL,这里使用OpenSSL开源库。1、openssl源码地址为:https://www.openssl.org/source/old/,这里选择版本为openssl-1.0.1u.ta.原创 2020-06-20 15:11:44 · 2232 阅读 · 1 评论 -
C/C++实现http下载文件
一、使用winhttp下载#include <afx.h>#include <afxinet.h>#define RECVPACK_SIZE 2048bool DownloadSaveFiles(char* url,char *strSaveFile) {//下载文件并保存为新文件名 bool ret=false; CInternetSession Sess("lpload"); Sess.SetOption(INTERNET_OPTION_CON转载 2020-06-18 14:12:07 · 4512 阅读 · 2 评论 -
理清gcc、libc、libstdc++的关系
当你在linux下写C/C++代码的时候,是不是会遇到许多编译链接的问题? 时不时报个glibc,gcc,g++等相关的错误? 很多时候都无从下手,而且比较混乱。 这也是编译链接过程中经常出现的问题。这篇文章不是去介绍如何编译链接,而是理清编译链接过程中碰到的一些概念和出现的问题。尤其是,libc,glib,glibc,eglibc,libc++,libstdc++,gcc,g++。从libc说起。libc是Linux下原来的标准C库,也就是当初写hello world时包含的头文件#includ转载 2020-06-17 20:19:17 · 558 阅读 · 0 评论 -
C++中的hash_map和map的区别
hash_map和map的区别在哪里?构造函数。hash_map需要hash函数,等于函数;map只需要比较函数(小于函数).存储结构。hash_map采用hash表存储,map一般采用红黑树(RB Tree)实现。因此其memory数据结构是不一样的。什么时候需要用hash_map,什么时候需要用map?总体来说,hash_map 查找速度会比map快,而且查找速度基本和数据数据量大小,属于常数级别;而map的查找速度是log(n)级别。并不一定常数就比log(n)小,hash还有hash函..转载 2020-06-16 15:42:41 · 263 阅读 · 0 评论 -
C++中的STL中map用法详解
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。1、map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个..转载 2020-06-16 15:16:54 · 173 阅读 · 0 评论 -
Makefile知识整理
一、gcc -l参数和-L参数用法含义1、-l 的用法-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了(即gcc -lm)2、-L 的用法当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-ltest参数,我们就能用上libtest.so库了(当然要原创 2020-06-11 15:15:48 · 2594 阅读 · 1 评论 -
快速排序算法
一、冒泡排序void MaoPaoSort(void){ int i, j, temp; for(i = 0; i < LEN-1; i++) for(j = 0; j < LEN-i-1; j++) { if(a[j] > a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = t...原创 2020-04-12 21:49:36 · 236 阅读 · 0 评论 -
git log显示中文乱码问题解决
1、运行GitBash窗口,在该窗口导航条(即最上面)右键,选择Options−>Text,找到下面两处 Locale:选择 zh_CN Charectorset:选择 UTF-82、到Git Bash命令窗口输入如下设置命令语句git config --global i18n.commitencoding utf-8 --注释:该命令表示提交命令的时候使用utf-8编码集提交git config --global i18n.logoutputencoding utf-8 -...原创 2020-04-06 00:44:24 · 1717 阅读 · 0 评论 -
字符串最后一个单词的长度
题目描述计算字符串最后一个单词的长度,单词以空格隔开。输入描述一行字符串,非空,长度小于5000。输出描述整数N,最后一个单词的长度。示例输入:hello world输出:5思路1. 利用 getline() 函数读取整行字符串,从字符串末尾开始,向前计数,遇到空格停止#include <iostream>#include <stri...转载 2020-03-03 22:52:57 · 157 阅读 · 0 评论 -
Git使用教程
参考:Git使用教程:最详细、最傻瓜、最浅显、真正手把手教!_一只蜗牛的博客-CSDN博客_git使用详细教程Git命令行基本操作 - tangsong - 博客园Git--- download网址:https://git-scm.com/downloadswindows版git:msysgit0. 安装Git网上有很多Git安装教程,如果需要图形界面,windows下建议使用TortoiseGit,linux建议使用Git GUI或者GITK。msysgit是 windows版的G转载 2020-02-23 16:30:25 · 405 阅读 · 0 评论 -
[C++ STL] vector使用详解
一、概述vector(向量): 是一种序列式容器,事实上和数组差不多,但它比数组更优越。一般来说数组不能动态拓展,因此在程序运行的时候不是浪费内存,就是造成越界。而vector正好弥补了这个缺陷,它的特征是相当于可分配拓展的数组(动态数组),它的随机访问快,在中间插入和删除慢,但在末端插入和删除快。二、定义及初始化使用之前必须加相应容器的头文件:#include <v...转载 2020-02-16 21:00:54 · 277 阅读 · 0 评论 -
C++ string 类详解
字符串是存储在内存的连续字节中的一系列字符。C++ 处理字符串的方式有两种,一种来自 C 语言,常被称为 C-风格字符串,另一种是基于 string 类库的字符串处理方式。C 风格字符串的处理可以参考https://www.cnblogs.com/tongye/p/10688941.html,本文着重介绍 string 类库的使用。一、string 类简介 C++ 中提供了专门的头文...转载 2020-02-16 20:25:36 · 570 阅读 · 0 评论 -
c++中的成员初始化列表语法
class MyClass{private: int a; int b; const int max;.....}对于const数据成员,我们不能像常规的那样使用构造函数来初始化,也就是不能像下面的e.g那么做。对此,c++提供了特殊的语法来初始化const数据成员---成员初始化列表。首先,来看看为什么不能这么做?e.gMyClass(int c...转载 2020-02-15 23:33:11 · 241 阅读 · 0 评论 -
C++中L和_T()之区别
字符串前面加L表示该字符串是Unicode字符串。_T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,VisualC++里边定义字符串的时候,用_T来保证兼容性。VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。以下是别人的总结:一、在...转载 2020-02-10 23:11:10 · 188 阅读 · 0 评论 -
深入理解C++中public、protected及private用法
这篇文章主要介绍了C++中public、protected及private用法,对于C++面向对象程序设计来说是非常重要的概念,需要的朋友可以参考下初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂。今天本文就来十分分析一下C++中public、protected及private用法。相信对于大家深入掌握C++程序设计...转载 2020-02-02 15:13:29 · 301 阅读 · 1 评论 -
C++类成员的访问权限
C++通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为成员访问限定符。所谓访问权限,就是你能不能使用该类中的成员。Java、C# 程序员注意,C++ 中的 public、private、protected 只能修饰类的成员,不能修饰类,C++中的类没有共有私有之分。在类的内部(定义类的代码内部),...转载 2020-01-02 19:31:21 · 852 阅读 · 0 评论 -
C++ 静态成员的使用
C++中的静态成员(静态成员函数和静态数据成员)属于类所有,不属于类的对象,与普通的成员相比,静态成员无this指针。1.静态数据成员class A{ public: static void print() { cout << "x="<<x << endl; //通过公有成员函数访问私有静态数据成员 } sta...转载 2020-01-02 19:20:56 · 293 阅读 · 0 评论 -
C语言利用随机函数进行随机排序(不放回抽样)
利用随机数生成函数rand()进行不放回抽样,代码如下#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h> typedef struct{ char name[32];}MAN;MAN men[7] = { "张三", "李四"...原创 2019-12-20 20:46:35 · 2288 阅读 · 1 评论 -
C语言判断文件夹或者文件是否存在的方法
方法一:access函数判断文件夹或者文件是否存在函数原型: int access(const char *filename, int mode);所属头文件:io.hfilename:可以填写文件夹路径或者文件路径mode:0 (F_OK) 只判断是否存在2 (R_OK) 判断写入权限4 (W_OK) 判断读取权限...转载 2019-07-28 18:12:59 · 717 阅读 · 0 评论 -
C语言:字符串中查找指定字符——strchr()和strrchr()
参考文章连接:1.http://c.biancheng.net/cpp/html/161.html2.http://c.biancheng.net/cpp/html/172.html1.头文件:#include <string.h>strchr() 用来查找某字符在字符串中首次出现的位置,其原型为: char * strchr (const char *str,...原创 2019-07-28 13:47:28 · 1986 阅读 · 0 评论