![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
andylan_zy
这个作者很懒,什么都没留下…
展开
-
strrchr()用法
函数名称: strrchr函数原型:char *strrchr(const char *str, char c);所属库: string.h函数功能:查找一个字符c在另一个字符串str中末次出现的位置(也就是从str的右侧开始查找字符c首次出现的位置),并返回这个位置的地址。如果未能找到指定字符,那么函数将返回NULL。使用这个地址返回从最后一个字符c到str末尾的字符串。原创 2017-06-20 21:45:48 · 1128 阅读 · 0 评论 -
结构体字节对齐
转自http://blog.sina.com.cn/s/blog_9b0604b40101phnb.html字节对齐的准则:其实字节对齐的细节和具体编译器实现相关,但一般而言,满足三个准则:1) 结构体变量的首地址能够被其最宽基本类型成员的大小所整除;2) 结构体每个成员相对于结构体首地址的偏移量都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节;例如上面第二个结转载 2017-10-16 10:32:56 · 231 阅读 · 0 评论 -
#ifdef与#endif的作用及用法
一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif它的作用是:当标识符已经被定义过(一般转载 2017-11-19 17:05:28 · 57853 阅读 · 6 评论 -
遍历vector时插入与删除
//在遍历vector时,中间插入与删除需注意,有坑 //本示例在每个数字“3”后面插入“4” vector<int> vec1 = {1,3,2,3,5,3}; vector<int>::iterator it1 = vec1.begin(); int i = 0; int idx = 0; while (it1 != vec1.end()) { if (...原创 2018-05-31 16:06:17 · 4156 阅读 · 0 评论 -
一个文件夹下的文件重命名
void reNameFiles(string path) //path为文件夹终极路径{ //文件句柄 long hFile = 0; //文件信息 struct _finddata_t fileinfo; static int i = 1; string p; if ((hFile = _findfirst(p.assign(path).append("\\*"...原创 2018-06-15 12:07:53 · 1086 阅读 · 0 评论 -
char与wchar转换
std::wstring CharToWchar(const char* c, size_t m_encode = CP_ACP){ std::wstring str; int len = MultiByteToWideChar(m_encode, 0, c, strlen(c), NULL, 0); wchar_t* m_wchar = new wchar_t[len + 1]; M...原创 2018-07-17 14:15:37 · 2970 阅读 · 2 评论 -
MTd与MDd的区别
C++ 程序修改或移植过程中有时出现编译错误,比如“链接错误,****__crt__**** ”,修改“项目 -> C/C++ ->代码生成 -> 运行库 :MTd 或MDd 就好了。 其中以小写“d”结尾的选项表示的DEBUG版本的,没有“d”的为RELEASE版本。大型项目中必须要求所有组件和第三方库的运行时库是统一的,否则将会出现LNK2005井喷。VS 多线程...原创 2018-07-25 15:16:14 · 6467 阅读 · 1 评论 -
程序耗时计算
getTickCount()函数返回CPU自某个时间(如启动电脑)以来走过的时钟周期数getTickFrequency()函数返回CPU一秒钟所走的时钟周期数。那么在代码中可以这样做来统计某段代码执行所耗时间: double t1 = (double)getTickCount(); //开始时间 //代码段 //... double t2 = (double)ge...原创 2018-11-14 20:09:35 · 913 阅读 · 0 评论 -
回调函数的实质及为什么要用回调函数?
出处1:https://blog.csdn.net/u014078216/article/details/49717405在C/C++里面,函数的概念很好理解,就是把某个任务独立出来,封装在一起,然后给它取个名字,它可以有参数和返回值。那么,回调函数是个什么鬼呢?它和函数到底有何异同?既然已经有了函数,为啥还非要生出个回调函数来?首先,回调函数也是函数,就像白马也是马一样。它具有函数的所...转载 2019-02-25 18:17:32 · 1300 阅读 · 0 评论 -
Thrift入门
参考:Thrift白皮书:https://blog.csdn.net/shutdown_r_now/article/details/51261124thrift概述:https://blog.csdn.net/baidu_22254181/article/details/82814489thrift的原理和使用:https://www.cnblogs.com/chenny7/p/42...原创 2019-06-11 14:47:03 · 585 阅读 · 0 评论 -
C++ 信号处理
转自:https://www.runoob.com/cplusplus/cpp-signal-handling.html 信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 Ctrl+C 产生中断。有些信号不能被程序捕获,但是下表所列信号可以在程序中捕获,并可以基于信号采取适当的动作。这些...转载 2019-06-30 11:51:18 · 593 阅读 · 0 评论 -
typedef和#define的用法与区别
typedef和#define的用法与区别一、typedef的用法在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像:typedef int INT;typedef int ARRAY[10];typedef (int*) pINT;typedef可转载 2017-10-13 15:49:05 · 259 阅读 · 0 评论 -
冒泡排序算法
int arr[]={3,2,5,4,8,7,6,9}; int nSize=_countof(arr); //获取数组个数 int i=0,j=0; cout<<"排序前:"<<endl; while(i<nSize) cout<<arr[i++]<<" "; cout<<"\n排序后:"<<endl; for(i=0;i<nSize-1;i++) for(j=0;j<n原创 2017-10-12 22:29:14 · 183 阅读 · 0 评论 -
文件路径
正斜杠,又称左斜杠,符号是"/";反斜杠,也称右斜杠,符号是"\"。文件路径的表示可以分为绝对路径和相对路径:1、绝对路径表示相对容易,例如pDummyFile =fopen("D:\\vctest\\glTexture\\texture\\dummy.bmp", "rb"); 给出了从盘符开始的全部路径,这里需要注意的是“\”要用双斜线"\\",vc工程默认访问的目录是工程目录,相对路径转载 2017-06-21 09:59:33 · 279 阅读 · 0 评论 -
return-1
根据所定义函数的需求返回不同的值。0和-1使用时:0一般表示成功执行-1一般表示不成功0和1使用时:1真0假return -1作用是函数返回。关于return的几句话是:1、有些函数确实可以不需要return,自然结束即可。如OutputSomething( ); 2、有些人习惯为return的返回值加一对( ),原创 2017-07-20 10:47:52 · 2212 阅读 · 0 评论 -
ini文件读写
有些软件会设置参数,当下次启动软件时要使用上次的设置,这时候就要用到ini文件1.写入ini文件。推荐使用WritePrivateProfileStringA()eg://参数1:节名;参数2:键名;参数3:键值;参数4:ini文件路径名::WritePrivateProfileStringA("pwd","user1","111111","d://user.ini");原创 2017-07-22 11:37:01 · 402 阅读 · 0 评论 -
C++位运算
什么是位(bit)? 很简单,位(bit)就是单个的0或1,位是我们在计算机上所作一切的基础。计算机上的所有数据都是用位来存储的。一个字节(BYTE)由八个位组成,一个字(WORD)是二个字节或十六位,一个双字(DWORD)是二个字(WORDS)或三十二位。如下所示: 0 1 0 0 0 1 1 1 1 0 0 0转载 2017-08-04 14:58:07 · 430 阅读 · 0 评论 -
数组与指针
数组和指针之区别列表以下面代码为例:char*p;chararray[100];说明如下:1 因为任何类型的指针变量(针对我们用的32位CPU而言)的长度为4,故sizeof(p)为4;但sizeof(array)为100.这一点是由编译器在编译阶段确定的,即编译器对于sizeof(p)是直接以常数4替换的,对sizeof(array)是直接以100替换的。由此也可转载 2017-09-12 16:10:10 · 250 阅读 · 0 评论 -
sizeof使用规则及陷阱分析
一、什么是sizeof 首先看一下sizeof在msdn上的定义:The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type si转载 2017-10-03 16:14:58 · 637 阅读 · 0 评论 -
sort()用法
(一)为什么要用c++标准库里的排序函数Sort()函数是c++一种排序方法之一,学会了这种方法也打消我学习c++以来使用的冒泡排序和选择排序所带来的执行效率不高的问题!因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率较高!(二)c++标准库里的排序函数的使用方法I)Sort函数包含在头文件为#include的c++标准库中,调用标准库里的排序方法可以不转载 2017-10-07 12:06:03 · 468 阅读 · 0 评论 -
lib与dll的区别
共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅转载 2017-07-20 09:00:29 · 246 阅读 · 0 评论 -
_MSC_VER
_MSC_VER是微软的预编译控制。_MSC_VER可以分解为:MS:Microsoft的简写。C: C编译器。VER:Version的简写。_MSC_VER的意思就是:Microsoft的C编译器的版本。微软不同时期,编译器有不同的版本:MS VC++ 15.0 _MSC_VER = 1910 (Visual Studio 2017)MS VC++ 14.0 _M...转载 2019-07-31 11:08:44 · 685 阅读 · 0 评论