C++
小伟锅
进阶的小白,大神梦!
展开
-
C++常见程序计时方法
目录1.常规计时 11.1 time() 11.2 GetTickCount 32.使用CPU时间戳进行高精度计时 43.精确获取时间QueryPerformanceCounter 7 1.常规计时1.1 time()C语言中time()函数函数简介 函数名: time 头文件:time.h 函数原型:time_t time(time_t转载 2017-07-06 20:34:29 · 6930 阅读 · 0 评论 -
C++结构体和共用体
复合数据类型包括数组、结构体、共同体、枚举、类、用户自定义类型结构体和共用体的区别:结构是用户自定义的类型同一个结构可以存储多种类型的数据。例如 struct shoes { char name[20]; int size; double price;};下面就可以按描述创建结构变量。shoes sport;通过sport.n原创 2017-08-04 21:22:41 · 830 阅读 · 0 评论 -
C++ 多线程并发控制——互斥锁 pthread_mutex
问题描述:有两个线程,主线程负责接收数据,并暂时保存在内存中,当内存中数量达到一定数据量时,批量提交到oracle中;另一个线程作为提交线程,定时检查一遍,不论内存中数据量达到多少,定期将数据提交到oracle中。两个线程并发进行,第一个写入内存或者数据库的时候,提交线程需要挂起,反之,主线程也需要被挂起。于是,特意来了解一下C++多线程中互斥锁的概念,简单的应用一下。----------转载 2017-08-04 21:25:50 · 1147 阅读 · 0 评论 -
C++之ShellExecute使用详解
有三个API函数可以运行可执行文件WinExec、ShellExecute和CreateProcess。1.CreateProcess因为使用复杂,比较少用。2.WinExec主要运行EXE文件。如:WinExec('Notepad.exe Readme.txt', SW_SHOW);3.ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件。首先必须引用shel原创 2017-08-19 23:37:10 · 17144 阅读 · 1 评论 -
C++之CString与double、int及float互相转化
在MFC程序中,可以使用Format方法方便的实现int、float和double等数字类型转换为CString字符串。以下是CString的Format支持的格式说明:%c 单个字符%d 十进制整数(int)%ld 十进制整数(long)%f 十进制浮点数(float)%lf 十进制浮点数(double)%o 八进制数%s 字符串%u 无符号十进制数%x 十六原创 2017-08-19 23:49:45 · 19283 阅读 · 0 评论 -
Visual Studio中C++关于Unicode字符集和多字节字符集
1.Unicode字符集 原本标准字符集为8位的ASCII码,但世界上的书写语言不能简单地用256个8位代码即一字节表示,就试更宽的值,例如16位值。这就是Unicode非常简单的原理。与混乱的256字符代码映射,以及含有一些单字节代码和一些双字节代码的双字节字符集不同,Unicode是统一的16位系统,这样就允许表示65536个字符。在这里会高兴地告诉你前128个Unicode字符(1原创 2017-08-20 16:29:46 · 12623 阅读 · 0 评论 -
MFC之ODBC实现对Excel文件读写
1.前言C++对excel文件进行读写主要方法有odbc读写和添加com库读写两种方法,本文先介绍odbc将excel当作数据库文件进行读写的方法,后续会介绍添加com库读写。使用odbc前提应确保ODBC中已安装有Excel表格文件的驱动"MICROSOFT EXCEL DRIVER (*.XLS)",默认情况都是保护Excel文件驱动。2.优缺点优点: 代码少,结构简单,适原创 2017-08-19 23:24:39 · 4070 阅读 · 2 评论 -
MFC之通过OLE实现对Excel文件的读写
关于C++实现对Excel文件的读写方法很多,大体思路为两类,一是ODBC方法,二是OLE方法,上一篇介绍了利用ODBC方法读写Excel文件,本文介绍使用OLE方法进行Excel文件读写。 文章参考了bolg.csdn.net/lht501692913/article/details/50345821,但在实际实现过程中存在各种小问题,故对其内容进行改进和补充。我采用VS2010+MFC原创 2017-08-20 23:56:40 · 5598 阅读 · 3 评论 -
error C2079 使用未定义的class 和 error C2011 ‘class’类型重定义
error C2079 使用未定义的class问题原因:在于.h文件引用的顺序不对,在系统编译的时候是由上至下编译头文件的。解决方法:(1) 添加头文件的时候基类文件在上,基于基类的子类头文件在其下,先编译基类再编译子类; (2)若b.h中用到了a.h中的内容,c.h需要用到b.h和a.h的内容,则先添加a.h再添加b.h。error原创 2017-08-21 00:49:38 · 12525 阅读 · 1 评论 -
C++之memset使用详解及This function or variable may be unsafe错误
1.memset使用详解1)void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。2).memset() 函数常用于内存空间初始化。如:char str[100];memset(str,0,100);3).memset可以方便的清空一个结构类型的变量或数组。如:struct sam原创 2017-10-26 13:06:56 · 599 阅读 · 0 评论 -
Debug与Release版本的区别详解
Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来。当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等。习惯上,我们仍然更愿意使用VC已经定义好的名称。 Debug版本包括调试信息,所以要比Release版本大很多(转载 2017-07-27 09:39:25 · 380 阅读 · 0 评论 -
C++:strcmp与strncmp的比较
strcmp与strncmp都是用来比较字符串的,区别在于能否比较指定长度字符串。strcmpC/C++函数,比较两个字符串 设这两个字符串为str1,str2, 若str1==str2,则返回零; 若str1 > str2,则返回正数; 若str1即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。如原创 2017-08-02 10:09:00 · 17369 阅读 · 0 评论 -
C++:string和stringstream用法总结
一、stringstring 是 C++ 提供的字串型態,和 C 的字串相比,除了有不限长度的优点外,还有其他许多方便的功能。要使用 string, 必須先加入这一行:#include 接下來要宣告一个字串变量,可以写成:string s;我们也可以在宣告的同时让它设成某个字串:string s="TCGS";而要取得其中某一個字元,和传统C 的字串转载 2017-07-19 20:34:16 · 8019 阅读 · 0 评论 -
C++实现多线程及其三种方法实现多线程同步
1.调用windows API实现多线程#include "stdafx.h"#include #include #include DWORD WINAPI myfun1(LPVOID lpParameter); //声明线程函数DWORD WINAPI myfun2(LPVOID lpParameter);using namespace std;int _tmain(in原创 2017-06-18 21:24:18 · 31010 阅读 · 1 评论 -
基于socket通信的,利用MFC实现TCP通信的C/S架构程序
1.程序说明 开发环境为VS2012,基于TCP连接的客户端与服务端的通信程序,服务端IP为本地网卡ip地址或127.0.0.1,默认端口为1234(在程序编写过程中连接端口要大于1000,否则容易与计算机中某些程序端口冲突导致无法通信)。2.socket简介MFC类库中,几乎封装了Windows Sockets的全部功能,在微软基础类库中有两个基础类:CAsyncSocke原创 2017-06-13 14:29:09 · 5118 阅读 · 2 评论 -
按Enter或Esc,MFC程序退出的解决方法
在Visual Studio中,MFC程序默认焦点在确定按钮上,回车就触发这个按钮的OnOK事件,默认按回车是触发OnOK事件,看看有没有无效断点; 注释掉OnOK();或重设tab键顺序;取消ONOK的default_button属性; 一、原因 当用户按下Enter键时,Windows就会自动去找输入焦点落在了哪一个按钮上,当获得焦点的按钮的四周将被点线矩形原创 2017-06-13 14:10:46 · 6642 阅读 · 0 评论 -
VS2012—警告未能成功加载“visual c++ package”包解决方法
使用vs2012打开或创建VC项目工程时候,提示“未能成功加载“Visual C++ Package”包。此问题可能是由配置更改或安装另一个扩展”错误或类似错误。错误原因: 在安装vs2012后,如果windows更新或.net framework更新都有可能引起vs2012出现上述未成功加载相关包的错误。 解决方法: 针对上述错误,微软已在官网进行说明并给原创 2017-06-12 10:33:06 · 7739 阅读 · 1 评论 -
C++ 静态 常量
1)静态成员变量C++静态成员变量是用static修饰的成员变量,不属于对象的一部分,而是类一部分,因此可以在没有实例化任何对象的时候使用静态成员变量。但是必须初始化它。由于静态变量只能被初始化一次,所以初始化成员变量不要放在如下地方:1.类中函数之中(函数可被多次调用);2.类外函数之中;3.头文件中(头文件可能被包含入多个地方,也可能被执行多次)。所以静态成员变量应该放在定原创 2017-06-06 11:24:38 · 4924 阅读 · 0 评论 -
void * data 数据类型参数解释
void * data 是一个无类型的指针参数,任意类型指针可以赋值给data,当data复制给其他类型时需要先指定数据类型。代码示例:int add(void *a,void *b){ int c; c=*((int*)a)+*((int*)b); return c;}int _tmain(int argc, _TCHAR* argv[]){ int a=1,b=2; i原创 2017-03-22 10:23:21 · 5543 阅读 · 0 评论 -
C++中栈和队列用法详解
1.C++栈用法详解堆栈是一个容器的改编,栈是限定仅在表尾进行插入或删除操作的线性表,因此表尾端成为栈顶,相应的,表头端成为栈底,不含有任何元素的栈称为空栈。它实现了一个先进后出的数据结构(FILO),栈一般采用数组作为其存储结构,这样做可以避免使用指针,简化程序,当然数组需要预先声明静态数据区的大小,但这不是问题,因为即便是频繁进出入栈操作,任何时刻栈元素的实际个数也不会很多,为栈预原创 2017-03-21 21:00:48 · 1693 阅读 · 0 评论 -
c++ assert() 使用方法
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badptr.c:#i转载 2017-03-18 20:35:38 · 329 阅读 · 0 评论 -
#ifndef/#define/#endif详解
想必很多人都看过“头文件中的 #ifndef/#define/#endif 防止该头文件被重复引用”。但是是否能理解“被重复引用”是什么意思?是不能在不同的两个文件中使用include来包含这个头文件吗?如果头文件被重复引用了,会产生什么后果?是不是所有的头文件中都要加入#ifndef/#define/#endif 这些代码? 其实“被重复引用”是指一个头文件在同一个cp转载 2017-07-31 09:11:55 · 365 阅读 · 0 评论 -
C++类模板 template <class T>
类模板与函数模板的定义和使用类似。有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:class Compare_int{public : Compare(int a,int b) { x=a; y=b; } int max( ) { return (x>y)?x:y; } int min(转载 2017-07-31 09:46:05 · 12248 阅读 · 0 评论 -
C++ wchar_t *和char * 互转
转自:https://blog.csdn.net/lightspear/article/details/54695123说道wchar_t和char两个类型大家都不会陌生wchar_t:在windows下是Unicode 16编码,也就是俗称宽字节char:当然就是指一个字节,在windows下面默认是gbk编码的 所以在windows 下 wchar_t 转 char也就是编...转载 2018-07-19 17:57:01 · 4565 阅读 · 0 评论