
c++
dancing_night
不积跬步无以至千里,qq联系方式:821486004
展开
-
C++ Reflection
c++实现反射原创 2022-01-06 17:57:17 · 958 阅读 · 0 评论 -
c++类型转换
1、static_cast Operator MSDN: The expression static_cast ( expression ) converts expression to the type of type-id based solely on the types present in the expression. No run-time type check转载 2015-03-19 22:27:15 · 470 阅读 · 0 评论 -
ffmpeg库移植到vc下需要的步奏
在VC下使用FFMPEG编译好的库,不仅仅是把.h,.lib,.dll拷贝到工程中就行了,还需要做以下几步。(此方法适用于自己使用MinGW编译的库,也同样适用于从网上下载的编译好的库,例如http://ffmpeg.zeranoe.com/builds/)。(1)像其他额外库一样,设置VC的Include路径为你c:\msys\local\include,设置VClib路径为次c:\msys转载 2015-04-28 11:58:19 · 1060 阅读 · 0 评论 -
简单的ffmpeg视频转码,只处理视频
1、简单说下整体流程用avformat_open_input打开输入文件上下文,再用avformat_find_stream_info找到流信息,为输出分配AVFormatContext空间,然后根据流信息找到视频流,为输出创建流,并打开编解码器,写输出文件头,然后一个循环读帧---解码----压缩----写入,然后flush_encoder,最后写文件尾,释放资源----结束。2、贴上代原创 2015-05-07 12:11:48 · 5187 阅读 · 0 评论 -
C++的XML编程经验――LIBXML2库使用指南
C++的XML编程经验――LIBXML2库使用指南写这篇文章的原因有如下几点:1)C++标准库中没有操作XML的方法,用C++操作XML文件必须熟悉一种函数库,LIBXML2是其中一种很优秀的XML库,而且它同时支持多种编程语言;2)LIBXML2库的Tutorial写得不太好,尤其是编码转换的部分,不适用于中文编码的转换;3)网上的大多数关于Libxml2的介绍仅仅是翻译了自带的资料,没转载 2015-08-10 17:04:33 · 917 阅读 · 0 评论 -
c调用程序并得到其输出的方法
1、windowschar buffer[1024]; STARTUPINFO si = {0}; PROCESS_INFORMATION pi = {0}; DWORD bytesRead; SECURITY_ATTRIBUTES sa = {0}; HANDLE hRead = NULL,原创 2015-08-14 14:20:29 · 943 阅读 · 0 评论 -
临界区、互斥量、信号量、事件
四种进程或线程同步互斥的控制方法1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。 2、互斥量:为协调共同对一个共享资源的单独访问而设计的。 3、信号量:为控制一个具有有限数量用户资源而设计。 4、事 件:用来通知线程有一些事件已发生,从而启动后继任务的开始。 临界区(Critical Section)保证在某一转载 2015-09-07 12:17:59 · 534 阅读 · 0 评论 -
浮点数在内存中的存储
作者: jillzhang 联系方式:jillzhang@126.com 本文为原创,转载请保留出处以及作者, 谢谢 C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit,我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如转载 2016-01-29 14:43:33 · 481 阅读 · 0 评论 -
c++ 指针
指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: int *ptr; char *ptr; int **ptr; int (*pt转载 2016-03-26 18:05:25 · 366 阅读 · 0 评论 -
osg粒子
粒子系统(osgParticle::ParticleSystem)- 维护并管理一系列粒子的生成,更新,渲染和销毁。粒子系统类继承自Drawable类。粒子的渲染控制因此与其它Drawable对象的渲染类似:控制其渲染属性StateAttribute即可。OSG提供了一个方便的函数以允许用户控制三个常用的渲染状态属性。方法setDefaultAttributes可以用于指定材质(或者指定为NULL原创 2016-05-12 16:00:37 · 779 阅读 · 0 评论 -
关于资源编译时报错RC : fatal error RC1107: invalid usage; use RC /? for Help
1、概要最近编译QGroundControl时遇到这问题,到处找解决方案。2、网上的答案网上关于这问题不少,include目录下,一个是无效路径,另一个是有绝对路径斜杠和反斜杠之内的,关于我的工程,没有这些,于是就懵逼了。3、解决过程首先这个错是rc.exe报错,然后查看我工程的资源编译Command Line,如下图:这些命令啥意思,完全懵逼,查看rc的帮助,如下原创 2016-12-16 12:48:08 · 4885 阅读 · 0 评论 -
ffmpeg4.x版本录音
1、最近一网友找到我,说我博客上的录音程序用不起了,研究一番发现是他用我代码然后链接ffmpeg库。发现版本改动还挺大,故此从新上传一份依赖最新版本的ffmpeg的录音程序,以便大家参考。2、直接上代码:/**最简单的录音*缪国凯 Mickel*821486004@qq.com*本程序用目前最新ffmpeg录音*2018-11-19*/#include <win...原创 2018-11-19 16:02:09 · 1785 阅读 · 4 评论 -
C/C++中const关键字详解 终结版
为什么使用const?采用符号常量写出的代码更容易维护;指针常常是边读边移动,而不是边写边移动;许多函数参数是只读不写的。const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替),分类如下: 常变量: const 类型说明符 变量名 常引用: const 类型说明符 &引用名 常对象: 类名 const 对象名 常成员函数:转载 2015-03-19 11:25:28 · 673 阅读 · 0 评论 -
指针常量、常量指针
和上面的数组指针、指针数组一样非常容易混淆,备忘一下。三个名词虽然非常绕嘴,不过说的非常准确。用中国话的语义分析就可以很方便地把三个概念区分开。一) 常量指针。常量是形容词,指针是名词,以指针为中心的一个偏正结构短语。这样看,常量指针本质是指针,常量修饰它,表示这个指针乃是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改。在C/C转载 2015-01-24 17:26:10 · 667 阅读 · 0 评论 -
std::string总结
在平常工作中经常用到了string类,本人记忆不好用到了的时候经常要去查询。在网上摘抄总结一下,为以后的查询方便:string类的构造函数:string(const char *s); //用c字符串s初始化string(int n,char c); //用n个字符c初始化string类的字符操作:const char &operator[](int n)cons转载 2015-01-26 14:49:37 · 596 阅读 · 0 评论 -
windows编程中遇到的各种宏的意义
在日常工作和学习中我们难免遇到各种各样的宏定义,有时候原创 2014-11-19 09:46:14 · 2263 阅读 · 0 评论 -
LPTSTR、LPCSTR、LPCTSTR、LPSTR、LPWSTR
初次接触这几个东西的人估计会被搞的晕乎乎的,我也是,最开始都是晕乎乎的在用,终于有一天克服了我懒惰的天性把这几个表兄表弟搞清楚了。有一天发现又有点忘了,现在终于明白好记性不如烂笔头,特此记录。一 LPSTR:定义:typedef CHAR* LPSTR;CHAR其实就是char。也就是char*。二 LPWSTR:定义:typedef WCHAR* LPSTR;type原创 2015-01-26 16:04:35 · 876 阅读 · 0 评论 -
std::map
std::map tmpMap;tmpMap.insert(make_pair(1, 11));tmpMap.insert(make_pair(2, 12));tmpMap.insert(make_pair(1, 5)); 上面这段代码执行后是什么结果呢?没错1,5插入失败。为什么会失败?看看下面一段代码:_Pairib _Linsert(_Nodeptr _Node, b原创 2015-01-29 09:19:47 · 1049 阅读 · 0 评论 -
STL之list/vector/deque
学习备忘录:总体分类:标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器: slist和rope。slist是一个单向链表,rope本质上是一个重型字符串。非标准关联容器: hash_set、hash_multiset、hash_map和hash_multimap。转载 2015-01-27 16:58:09 · 749 阅读 · 0 评论 -
std::list
list是一个双向链表,因此它的函数也都要从链表的角度来进行理解,它需要额外的内存开销。list相对vector等容器来说,它的优点是,能在任意位置,快速的插入和删除一个元素(常数时间)。如果总是在容器的末尾插入元素,那用vector会更快。list快速插入的优势是在容器比较大的时候才能体现出来的。list 是线性表,但非排序表(即有内置的排序规则),而set、map等是排序表。定义:原创 2015-01-27 11:47:04 · 1104 阅读 · 0 评论 -
std::vector
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。为了可以使用vector,必须在你的头文件中包含下面的代码:#include vector属于std命名域的,因此需要通过命名限转载 2015-01-27 16:43:55 · 754 阅读 · 0 评论 -
map在insert数据后红黑树结构变化
下面这段测试代码std::map tmpMap;pair ::iterator, bool> tmp = tmpMap.insert(make_pair(1, 11));tmp = tmpMap.insert(make_pair(2, 12));tmp = tmpMap.insert(make_pair(3, 13));tmp = tmpMap.insert(make_pair原创 2015-01-30 14:40:31 · 935 阅读 · 0 评论 -
vs断点不可用
这个问题遇到很多次了,今天又遇到,按照以前的经验解决了,顺便再网上找了下资料记录下。转自:http://blog.youkuaiyun.com/machh/article/details/5539111【 1】以前也遇到过同样的问题,但没有问个为什么,也没有探个毕竟。昨天调试一个DLL,添加输出信息吧,太麻烦而且不轻易定位, 但设置断点后按“F5”,断点不可用,气泡提示“当前不会命中断点,还没转载 2015-02-03 14:02:29 · 872 阅读 · 0 评论 -
avi通过文件读写方式实现剪切、拼接(不经过解码、编码)
本文参考:http://blog.youkuaiyun.com/sunnylion1982/article/details/38376453网上很多视频处理软件在处理avi视频剪切为avi视频的时候,是先解码,在找到需要的帧,然后再压缩编码的,这样效率比较低,因为编码是比较花时间的,在解析avi文件结构时,我发现是否可以把需要的帧直接拷贝文件数据然后根据真实的数据写文件头,以较快的速度剪切avi文件?答案原创 2015-02-06 11:10:13 · 3437 阅读 · 2 评论 -
分享一段wave降噪处理代码
一段wave波形降噪处理代码。头文件:#pragma oncetypedef signed short Int16; typedef signed int Int32;//body of the "fmt" chunk typedef struct { Int16 FormatTag; Int16 Channels; Int32 SamplesPerSe原创 2015-02-05 17:05:19 · 7372 阅读 · 7 评论 -
CString总结
作为MFC字符串处理最方便的类,CString是一个很让人喜欢的东西。用了这么多年,从来没好好的总结一下,有时候报错都不知道怎么报的,今天在这里总结一下。一、CString 类对象的初始化:CString str;CString str1(_T("abc"));CString str2 = _T("defg"); TCHAR szBuf[] = _T("原创 2015-01-24 09:59:35 · 732 阅读 · 0 评论 -
数组指针和指针数组
这东西老是搞混淆,虽然是具体用的时候没什么问题,编译几次就能写对,但是还是找了找资料已做备忘。数组指针(也称行指针)定义 int (*p)[n];()优先级高,首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度。如要将二维数组赋给一指针,应这样赋值:int a[3][4];i转载 2015-01-24 17:21:47 · 593 阅读 · 0 评论