
C/C++
文章平均质量分 64
zxz520zmg
本人c++新手,若发现错误欢迎随时联系。QQ1179534289。微信:zhao13020710246
展开
-
vs2017编译的64位libssh2库
libssh2依赖于openssl和zlib,所以需要有所以需要先编译:openssl和zlib才行。openssl和zlib。openssl和zlib我是下载人家编译好的库。openssl官网地址:官网很慢。本人下载了几个小时zlib 本人是下载的其他人编译好的库此处就不再说明了。原创 2022-11-18 22:37:40 · 1254 阅读 · 1 评论 -
线程和进程
线程和进程的区别:1、进程是资源分配的最小单位。进程是执行的最小单位。2、每个进程有独立的代码和数据空间、进程间切换开销较大。但是比较壮硕,一个进程崩溃不会影响其他进程。线程可以看作轻量级的进程,同一个进程内的线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器。线程间切换开销小。但是一个线程崩溃会导致整个进程崩溃。有一个形象的比喻。进程就像一列火车,线程是一个车厢。一个进程可以包含多个线程(火车有多个车厢)。进程间切换开销较大,线程间切换开销较小(一列火车上的乘客很难换到另一列火原创 2022-04-18 16:18:21 · 994 阅读 · 0 评论 -
TCP传输机制
一、TCP基础知识TCP是一种面向连接的、可靠的、基于字节流的通信协议。TCP通过确认机制、超时重传、滑动窗口确保传输的可靠性。二、建立连接 - 三次握手1、Client端发送连接请求2、Server端收到连接请求后回复ACK报文,并为这次连接分配资源3、client端收到ACK报文后也向Server端发送ACK报文,并且分配资源。小结:三次握手完成两个重要功能:1.双方做好发送数据的准备工作。2.双方就初始序列号进行协商。三、可靠传输 - 确认机制、超时重...原创 2022-04-15 16:15:02 · 3904 阅读 · 0 评论 -
Windows多线程编程详解
创建线程有三种方式,分别时CreateThread、AfxBeginThread、_beginthreadex一、三者的区别:1、CreateThread。CreateThread是Windows提供的系统API任何时候都可以使用。2、AfxBeginThread。AfxBeginThread是MFC对CreateThread的封装。AfxBeginThread会返回一个CWinThread的指针,也就是说他会New一个CWinThread型对象。而这个对象会自己维护线程句柄和ID,不再需要手动原创 2021-12-24 08:53:49 · 2744 阅读 · 0 评论 -
VS当前不会命中断点,还未为文档加载任何符号解决方案
使用VS新建空项目编写代码调试时出现此问题。解决方法如下1、项目右键属性 -> C/C++ -> 常规 -> 调试信息格式 选择“程序数据库(/Zi)”2、项目右键属性 -> C/C++ -> 优化 ->优化 选择“禁用(/Od)”3、项目右键属性 -> 链接器 -> 调试 ->生成调试信息 选择“禁用(/Od)”...原创 2021-12-22 17:19:15 · 2467 阅读 · 0 评论 -
c++多态分类及过程
声明三个定义:1、重载1、作用域相同(不能再两个类中)2、函数名相同3、参数相同,而对返回值没有要求2、重定义(隐藏)1、分别位于派生类与基类2、函数名相同3、参数可以不同,返回值可以不同3、重写(覆盖)1、分别位于派生类与基类2、函数名相同3、参数相同4、返回值相同(即函数原型必须相同)5、基类函数中有virtua...原创 2019-12-02 14:56:22 · 295 阅读 · 0 评论 -
动态库在部分电脑上运行时提示“找不到MSVCR80.dll”
可能因为动态库编写时的配置问题。杭州动态库的原因是属性 -- 链接器 -- 输入 -- 附加依赖项改为了hid.lib SetupAPI.Lib,忽略所有默认库改为否,忽略特定库改为空...原创 2019-05-05 17:04:16 · 797 阅读 · 0 评论 -
利用CFileDialog类获取文件路径
CString filter = L"文件 (*.txt)|*.txt||"; //文件过滤方式CFileDialog fileDlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,filter,NULL); //创建文件类对象fileDlg.m_ofn.lpstrTitle=L"打开文件"; //定义窗口名称if(IDOK...原创 2019-05-05 17:02:36 · 1979 阅读 · 0 评论 -
c++ 串口通信实例
class CYSerial{public:CYSerial():m_hFile(INVALID_HANDLE_VALUE){}~CYSerial(){}__inline HANDLE GetHandle(){return m_hFile;}//设置超时void SetTimeout(DWORD ReadIntervalTimeout=1,...原创 2019-05-05 17:00:52 · 1687 阅读 · 0 评论 -
c++ 网口通信实例
class CYBlockSocket{protected:CStringA m_strIP;UINT m_nPort;SOCKET m_hSocket;public:SOCKET GetHandle(){return m_hSocket;}CYBlockSocket():m_hSocket(INVALID_SOCKET){}~CYBl...原创 2019-05-05 16:59:20 · 3726 阅读 · 0 评论 -
编辑框设置最大输入字符长度
m_ceditTest.SetLimitText(6);((CEdit*)GetDlgItem(IDC_EDIT2))->SetLimitText(6);m_ceditTest 是CEdit型变量IDC_EDIT2是要限制的编辑框ID,设置的最大输入字符为6原创 2019-05-05 16:57:23 · 2664 阅读 · 0 评论 -
MFC自定义消息实现步骤
1、在头文件中定义消息宏(最好在atdafx.h中)#define WM_TEST WM_USER+1002、在相应头文件中声名消息处理函数,必须是如下形式afx_msg LRESULT MsgTest(WPARAM wParam, LPARAM lParam);3、在消息映射中添加自定义消息的映射ON_MESSAGE(WM_TEST, TestMsg)4、实现消息处理函...原创 2019-05-05 16:56:03 · 441 阅读 · 0 评论 -
c++捕获空指针异常
/**********************************//project -> Properties -> C/C++ -> Code Generation --> Enable C++ Exceptions//选择 Yes with SEH Exceptions (/EHa) 这样的话C++的try catch 也可以捕获到空指针,内存越界,0除异...转载 2019-04-15 16:58:46 · 5525 阅读 · 0 评论 -
C++基础知识
一、c++运算符和函数功能1:reinterpret_cast强制类型转换符.2:UpdateData是MFC的窗口函数,用来刷新数据。操作系统会调用这个函数初始化对话框中的数据,或者检索或者验证对话框中的数据。UpdateData(TRUE):将控件的值赋值给变量。UpdateData(FALSE):将变量的值赋值给控件。3:EnableWindow(TRUE):窗口允许接收用户的输入。Enab...原创 2018-05-31 08:49:49 · 286 阅读 · 0 评论 -
c++ 事件
用户模式的线程同步机制效率高,如果需要考虑线程同步问题,应该首先考虑用户模式的线程同步方法。 但是,用户模式的线程同步有限制,对于多个进程之间的线程同步,用户模式的线程同步方法无能为力。这时,只能考虑使用内核模式。 Windows提供了许多内核对象来实现线程的同步。对于线程同步而言,这些内核对象有两个非常重要的状态:“已通知”状态,“未通知”状态(也有翻译为:受信状态,未受信状态)。W...原创 2019-07-09 11:46:41 · 1604 阅读 · 0 评论 -
__declspec用法
格式:__declspec( property( get=get_func_name ) ) declarator__declspec( property( put=put_func_name ) ) declarator__declspec( property( get=get_func_name, put=put_func_name ) ) declarator该属性可用于类或结构定义中的非静...转载 2018-05-30 11:48:44 · 224 阅读 · 0 评论 -
c++多字节转UTF-8
std::stringCSqliteDBManager::To_UTF8(std::stringstrData){//把GB2312编码的中文字串转换为UTF-8编码的中文字串intiLen=strData.length();CHAR*pMb=newCHAR[iLen+1];intiMbLen=iL...原创 2019-05-05 17:05:35 · 3370 阅读 · 2 评论 -
listCtrl控件的使用教程
属性设置:View ReportNo Column Header TrueOninitDialog函数中添加下边语句m_listCtrlShow.InsertColumn(0,NULL,LVCFMT_LEFT,600,-1);添加数据:m_listCtrlShow.InsertItem(m_listCtrlShow.GetItemCount(),_T("连接成功"));...原创 2019-05-05 17:06:31 · 376 阅读 · 0 评论 -
STL之pair
1 pair的应用pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。2 make_pair函数temp...转载 2018-05-22 14:50:40 · 132 阅读 · 0 评论 -
Json使用教程
使用第三方静态库的步骤:1、编译文件生成静态库。2、把相关的.h文件放入D:\VS2005安装目录\VC\include路径下。3、把相应的.lib文件放在D:\VS2005安装目录\VC\lib路径下。注释:聚利工作电脑已经配置好了在使用中只需要将json.rar中的文件添加(并包含)到项目中在需要使用Json的文件中添加json.h的头文件即可使用了使用...原创 2019-08-02 14:27:32 · 322 阅读 · 0 评论 -
CString成员函数用法大全
CString的构造函数CString( );例:CString csStr;CString( const CString& stringSrc );例:CString csStr("ABCDEF中文123456");CString csStr2(csStr);CString( TCHAR ch, int nRepeat = 1 );例:CString csStr('a',5);/...转载 2019-08-06 11:06:35 · 397 阅读 · 0 评论 -
mfc 消息机制
1:先讲下Windows消息的分类。Windows消息分为系统消息和用户自定义消息。Windows系统消息有三种: 1)标准Windows消息。除WM_COMMAND外以WM_开头的消息是标准消息。例如,WM_CREATE、WM_CLOSE。 2)命令消息。消息名为WM_COMMAND,消息中附带了标识符ID来区分是来自哪个菜单、工具栏按钮或加速键的消息。...原创 2019-07-09 11:52:00 · 192 阅读 · 0 评论 -
mfc 运行机制
1:用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作。我们可以把需要全局访问的变量和函数定义为这个类的成员变量和成员函数,就可以实现全局访问了。2:CwinApp类被称为应用程序对象。一个MFC程序只允许有一个应用程序对象3:几个比较重要的类:c工程名app类处理消息,将接到的消息分给相应的...原创 2019-07-09 11:51:08 · 799 阅读 · 0 评论 -
ocx新手教程
OCX是窗口上的控件如Buttion。程序运行时必须将生成的OCX控件拷贝到可执行目录下。MFC Activex控件工程中.idl是对外的接口文档,所有的对外的接口都在该文档中声明,这个文档为客户程序提供了本控件的属性、方法以及可能相应的控件的接口。*APP类是控件主程序模块,定义了控件的注册、删除、等功能,一般不会动。如有需要我们可以在其中的initinstance和Exitinstan...原创 2019-07-09 11:42:14 · 5881 阅读 · 1 评论 -
Json使用教程
Json使用教程使用第三方静态库的步骤:1、编译文件生成静态库。2、把相关的.h文件放入D:\VS2005安装目录\VC\include路径下。3、把相应的.lib文件放在D:\VS2005安装目录\VC\lib路径下。在使用中只需要将json.rar中的文件添加(并包含)到项目中链接:在需要使用Json的文件中添加json.h的头文件即可使用了使用教程如下:JsonCpp 是一...原创 2019-07-09 11:31:02 · 4249 阅读 · 0 评论 -
列表框控件自动下滑到最新行
::SendMessage(m_ListBoxNotes.m_hWnd,WM_VSCROLL,MAKEWPARAM(SB_BOTTOM,0),NULL);其中m_ListBoxNotes为控件控制型变量原创 2019-07-09 11:13:25 · 274 阅读 · 0 评论 -
c++判断文件是否存在+获取文件大小
一、 判断文件是存在GetFileAttributes( m_Output) == -1 //判断文件是否存在若不存在返回-1 返回字段 返回值 属性类型 FILE_ATTRIBUTE_READONLY 1 只读 FILE_ATTRIBUTE_HIDDEN...原创 2019-05-05 17:07:47 · 1798 阅读 · 0 评论 -
C动态库的两种编写方式
一、不使用.def模块导出1、新建项目->Win32项目->下一步->应用程序类型:DLL,附加选项:导出符号、预编译头。->完成。2、删除导出变量示例TST_API int nTst=0;导出函数示例TST_API int fnTst(void){ return 42;}导出类的构造函数CTst::CTst(){ return;}3、参照导出函数示例,编写自己的函数接口。...原创 2018-05-30 11:47:53 · 1750 阅读 · 0 评论 -
CreateThread的使用教程
CreateThread:创建多线程1。在类中声明静态成员函数(假设在类A中)//函数名可变其他不可变static DWORD ReadProc(LPARAM lParam); 2。在某一个函数中开线程HANDLE hdFile; hdFile = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ReadProc,this,0,NULL);3。实现线程DWO...原创 2018-05-23 08:50:32 · 1776 阅读 · 0 评论 -
16进制数组和ASK码字符之间的转换
BIN 16进制数组HEX ASK码字符串#define PCD_NO_ERROR 0 // 操作成功执行int HexToBin(unsigned char *shex,unsigned char *sbin,int shex_len){ int i; const char *p = NULL; unsigned char tmpHex[3]; int r...原创 2018-05-23 08:50:39 · 4720 阅读 · 0 评论 -
编写动态库时:出现:error LNK2005: _DllMain@12 已经在 *****.obj 中定义 错误
解决方法:项目 -- 属性 -- c/c++ -- 预处理器 -- 将预处理定义中的_USRDLL 删除即可原创 2018-05-23 08:50:48 · 4646 阅读 · 0 评论 -
gSoap的“error LNK2001: 无法解析的外部符号 _namespaces”解决方法
在stdafx.cpp中添加gsoap生成的.nsmap头文件。例如:#include "soap/Service1Soap.nsmap"原创 2018-05-23 08:50:58 · 1611 阅读 · 0 评论 -
c++读取CPU序列号
注:亲测CPU序列号有重复的一命令行方式、打开命令提示符界面(cmd)输入wmic CPU get ProcessorID即可得到CPU序列号二代码、#include <iostream>#include <intrin.h>#include <string>using namespace std;void getcpuid(unsigned int CPUIn...转载 2018-05-22 14:34:58 · 11736 阅读 · 1 评论 -
UNICODE格式下CString输出乱码
m_clistboxShow为列表框控件CListBox型变量。以该种方式输出则会出现乱码现象CString cstrShow;char sShow[16] = "123";cstrShow.Format(_T("%s"),sShow);m_clistboxShow.AddString(cstrShow);需要修改为CString cstrShow;char sShow[16] = "123";c...原创 2018-05-29 15:52:17 · 2234 阅读 · 1 评论 -
error LNK2005解决方法
错误:1>nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) 已经在 LIBCMT.lib(new.obj) 中定义1>nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operato...转载 2018-05-22 14:51:51 · 6762 阅读 · 9 评论 -
STL算法
一、std::find原型:#include<algorithm>template<class ImputIterator, class T>InputIterator find(InputIterator first, InputIterator last, const T& Value);参数:first 左区间last 右区间Value 值功能:本算法的功...转载 2018-05-22 14:50:08 · 122 阅读 · 0 评论 -
STL之List
vector :vector和built-in数组类似,拥有一段连续的内存空间,能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当插入较多的元素后,预留内存空间可能不够,需要重新申请一块足够大的内存并把原来的数据拷贝到新的内存空间。这些影响了vector的效率,但是实际上用的最多的还是vector容器,建议大多数时候使用vecto...原创 2018-05-22 14:49:16 · 129 阅读 · 0 评论 -
STL之Vector
vector :vector和built-in数组类似,拥有一段连续的内存空间,能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当插入较多的元素后,预留内存空间可能不够,需要重新申请一块足够大的内存并把原来的数据拷贝到新的内存空间。这些影响了vector的效率,但是实际上用的最多的还是vector容器,建议大多数时候使用vecto...原创 2018-05-22 14:48:36 · 97 阅读 · 0 评论 -
CString转char*
1、多字符集下转换CString cstr;char *p =(LPSTR)(LPCTSTR)cstr;注意:次方法只能转换成char*不能转换成char[]数组2、宽字符集下转换int len =WideCharToMultiByte(CP_ACP,0,m_WriteFilePath,-1,NULL,0,NULL,NULL); cha...转载 2018-05-22 14:46:05 · 271 阅读 · 0 评论 -
c++调用第三方静态库教程
1、编译文件生成静态库。2、把相关的.h文件放入D:\VS2005安装目录\VC\include路径下。3、把相应的.lib文件放在D:\VS2005安装目录\VC\lib路径下。 4、包含头文件-调用。...原创 2018-05-22 14:42:08 · 2227 阅读 · 0 评论