参考链接: C++ logb() 通常,在程序设计中,我们会发现一些程序段在程序的不同地方反复出现,此时可以将这些程序段作为相对独立的整体,用一个标识符给它起一个名字,凡是程序中出现该程序段的地方,只要简单地写上标识符即可...这样的程序段,我们称之为子程序(函数)。下面介绍一下C++提供的各种标准函数。 ...C++常用库函数 1.缓冲区操作函数 1-1 函数名: memchr 函数原型: void *memchr(const void *buf, int c, sizet count); 参数: buf...用 strSource的首字符覆盖 strDestination 的结尾空字符。当字符串被拷贝或添加时不执行上溢出检测。如果源和目的字符串重叠, strcat 的行为是不确定的。 ...所需头文件; 功能:把源字符串 strSource(包括结尾的空字符)拷贝到 strDestination 所指的位置。在字符串被拷贝或添加时不执行上溢出检测。
前面已经讲过了C++ MFC程序对Excel文件的写入,链接如下: https://blog.csdn.net/V_Gogol/article/details/81782644 后面很长时间没有更新读取数据操作...读取和写入大体相似,要引入的头文件和相关配置也是一样的,具体可以先看上面那一篇关于写入的博文,此篇为了节省篇幅便于阅读,就只写读取的具体代码和解释。...我将读取和写入操作都封装成了一个专门的类,便于后续的调用: list控件读取Excel数据 将Excel数据读取到mfc控件中,我写的函数适用于Excel文件列数和list控件列数相同的情况,此处提供源码...具体代码如下: //参数为列表控件 void CFileRW::ExcelToList(CListCtrl *datalist) { //文件对话框,打开具体Excel文件 CFileDialog...,从1开始 long startcol = range.get_Column(); //清空list控件内容 datalist->DeleteAllItems(); for (int i = startrow
删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置ID为IDC_TABTEST 在More Styles里勾上Bottom....再分别为其添加对应的基于CDialog类CPara1, CPara2, CResult. 5....在IDD_PARA1对话框上添加静态文本控件内容为"参数一" 再在后面插入一个文本框控件, 用ClassWizard将其关联为一个int型变量,名为m_nPara1; 在IDD_PARA2对话框上添加静态文本控件内容为..."参数二" 再在后面插入一个文本框控件, 用ClassWizard将其关联为一个int型变量,名为m_nPara2; 在IDD_RESULT对话框上添加静态文本控件内容为"结果" 再在后面插入一个文本框控件...添加Tab Control控件的TCN_SELCHANGE事件响应函数OnSelchangeTabtest(NMHDR* pNMHDR, LRESULT* pResult) ,函数体代码如下: 1 2
其次,在功能方面,包括IO类,且同时支持窄字符和宽字符;而却只支持以char为导向的流。 再次,在C++的iostream接口标准进行了调整。...的接口与实现与存在差异。 最后,组件声明于std命名空间中,而组件是全局性的。两者混合使用存在一定的风险。...2、逗号分割表达式 逗号表达式可能包含一个或多个用逗号分隔的子表达式,例如: if(++x, --y, cin.good()) 上面的if表达式中,每个语句都会被执行到,但是整个if的条件实际上是以第三个表达式值为...if的条件值。...cin.good()默认值为1,只有当输入值和定义变量类型不一致的时候变为0。在循环语句中情况也是一样。
常用值包括: 0:通常用于选择默认协议。例如,当 domain 是 AF_INET 且 type 是 SOCK_STREAM 时,默认协议是TCP。...服务器关闭连接:服务器在检测到客户端已经关闭连接之后,关闭相应的客户端套接字。 十、setsockopt() setsockopt() 函数用于设置套接字选项。...常用选项 以下是一些常用的 setsockopt() 中optname选项: SO_REUSEADDR:允许重用本地地址和端口。...SO_RCVBUF:设置接收缓冲区的大小。 SO_SNDBUF:设置发送缓冲区的大小。 SO_KEEPALIVE:启用保活机制,以检测断开的连接。...在网络编程中,它通常用于设置套接字的非阻塞模式。
在日常代码书写代码时可以借助C++关键字,简化C++代码书写,提高代码的安全性、效率和可读性。...当前我常用关键字如下含有delete、default、nodiscard、const、constexpr、override和final。...default default是程序员显性地告诉编译器“你按你的方式为我生成这个函数吧”,由编译器生成合理的默认行为。通常用于由编译器生成类的6个默认函数中的部分和全部,注意生成的默认函数为浅拷贝。...default; // 拷贝赋值运算符 DefaultClass&operator=(const DefaultClass&) = default; // 移动构造函数 (C+...本文列出的主要是我常用的几个,欢迎大家评论区留言自己用的好用的关键字
参考链接: C++ vsnprintf() 尽管说define有很多不足之处,很多时候我们需要使用const来替代define, 也可以使用typedef来替代define。 ...但是,在一些实际工程中,我们还是不可避免的使用到了define,这给我们带来了极大的方便。 ...1 定义头文件,防止重复包含 其实不是真正的防止重复包含头文件,而是忽略除了第一次之外的其他包含: http://blog.csdn.net/wangshubo1989/article/details...WANGSHUBO_SELF_MSG WM_USER + 29 static const std::string kDate = "2016-11-25"; 3 分平台实现 对于一些快平台开发,完全可以使用define来包含不同的文件...,或是实现不同的功能: #if (MY_PLATFORM == MY_PLATFORM_WIN32) #include #include "sakura/win32/compact/dirent.h
--- 前言 前两天再刷蓝桥杯题库的时候做到一道有思路但是因为用循环太复杂导致没写出来,后来看别人的题解的时候才知道原来要使用“全排列函数”,而我当时对这个函数没有一点影响了,所以我觉得我应该复习一些c...一、全排列函数(重要) 1.对函数的介绍: 我个人的理解是:“它会把数组中元素的排列顺序都排列一遍后返回一个false,在此之前都返回的是true”,比如说一个数组{a,b,c},它会把{a,b,c},...{a,c,b},{b,a,c},{b,c,a},{c,a,b},{c,b,a}都弄一遍。...(不能重复)结果小的先输出,结果相同的,较小的乘数较小的先输出。...) { cout << b[i]; } return 0; } 执行结果: 在上面加入这行代码 replace(b, b + 7, 1, 2); 执行结果: ---- 总结 这些常用的函数需要我们记住并且会用
但是,在一些实际工程中,我们还是不可避免的使用到了define,这给我们带来了极大的方便。...1 定义头文件,防止重复包含 其实不是真正的防止重复包含头文件,而是忽略除了第一次之外的其他包含: http://blog.csdn.net/wangshubo1989/article/details...WANGSHUBO_SELF_MSG WM_USER + 29 static const std::string kDate = "2016-11-25"; 3 分平台实现 对于一些快平台开发,完全可以使用define来包含不同的文件...,或是实现不同的功能: #if (MY_PLATFORM == MY_PLATFORM_WIN32) #include #include "sakura/win32/compact/dirent.h...MY_PLATFORM_WIN32) #include #include #include #endif 4 定义级别 比如打日志,我们可能有很多种日志的级别
【C++】vector 常用成员函数的模拟实现 1. vector 常用成员函数的模拟实现 2. vector 常用成员函数实现后的测试 #include #include<iostream...()); for (auto e : v) { push_back(e); } }*/ void swap(vector& v) { //注意这里用的是库函数...) { //要加判断,因为当n<capacity时,不需要做处理 if (n > capacity()) { //这里需要先保存大小,因为开辟新空间后,成员函数size里的地址..._finish还指向销毁的旧空间, //无法正确完成_finish的更新 size_t sz = size(); T* tmp = new T[n]; if (_start
string可以说是是字符数组的升级版,使用更加啊方便,不容易出错。本文对string的常用函数进行简单介绍,做到会用即可。 string中的常用函数分为四类,即赋值,添加,比较和删除。...在最后加个字符串; 5.str.sppend(str1,1,3);//将str1的1-3位的字符加到str后面; 6.str.append(“abcd”,5);str.append(5,'x');同上...,只是是在尾部插入 三、比较 1.C ++字符串支持常见的比较操作符(>,>=,C-string的比较(如 str,>=,的时候是根据“当前字符特性”将字符按字典顺序进行逐一得 比较。...字典排序靠前的字符小,比较的顺序是从前向后比较,遇到不相等的字符就按这个位置上的两个字符的比较结果确定两个字符串的大小。同时,string (“aaaa”) <string(aaaaa)。
在这篇文章中,我将跟大家分享如何利用C#和C++来开发反病毒产品无法检测到的反向Shell。 ? 简单的C#反向Shell GitHub上有很多能够通过cmd.exe打开反向Shell的C#代码样本。...你可以看到,.exe文件通过了Windows Defender的检测,说明从AV的角度来看,它不会执行任何恶意操作,这也是正常的扫描结果。 ?...检测报告:【点击阅读原文获取】 C++反向Shell+一定程度的持续感染 搜索片刻之后,我发现了一份有类似反向Shell功能的C++代码。...这个Excel文件并不会被检测为恶意文件,而且能够在不触发任何警报的情况下打开反向Shell。 ? ? ? VirusTotal检测结果 ?...检测报告:【点我获取】 总结 虽然打开反向Shell的方式有很多种,但是这篇文章主要的目标是绕过反病毒产品的检测。而前两种Shell是目前市场上所有AV都无法检测到的。
知乎上有一个问题:C++ 有哪些经常用到的设计模式?设计模式一共有23种至多,哪些才是经常用到的呢?这里Jungle简单总结了下个人在学习和开发过程中经常碰到的一些设计模式及其使用场景。...开源项目NVDLA的compiler中各类node的建立,TensorFlow源码和LLVM中的pass,都有工厂模式的用例。...采用职责链模式不仅可以方便扩展(当增加一个接受者时,只需要在链上的适当位置插入对应的处理方法即可),而且可以替换掉代码中可能存在的switch-case或者if-else。...在工具的设计、具有层级关系或权限关系的任务处理场景中可以应用职责链模式。 策略模式:常常与工厂模式搭配,封装不同的算法(策略),再结合C++多态机制,策略模式在实际开发过程中应用十分广泛。...代理模式:C++智能指针、引用计数等
我们先来了解一下基本的概念吧 C++标准库都是英语解释。我们也应该试着去适应,不懂的可以查阅。...二、string的常用见用法 2.1 string对象的构造 2.1.1 string对象的构造的使用方法 最为常用的无非就是我们用串string来构造一个对象,也就是存储一个字符,常用的方法有如下几点...同时也是较为常用的两部分。...=0; j < len;j++, i++) { _str[i] = str[j]; } _size += len; return *this; } string 在C+...本篇文章列举出了string中常用的语法和接口底层的底层实现,这些都是我们应该熟练掌握的内容。
C++中经常会用到标准库函数库(STL)的string字符串类,跟其他语言的字符串类相比有所缺陷。...这里就分享下我经常用到的两个字符串截断函数: #include #include #include #include using...subline.size() << endl; for (auto it : subline) { cout << it << endl; } return 0; } 函数CutString根据选定的字符切分...这两个函数在很多时候都是很实用的,例如在读取文本的时候,通过getline按行读取,再用这两个函数分解成想要的子串。
【C++】“list”的介绍和常用接口的模拟实现 一. list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。...与其他序列式容器相比,list和forward_list最大的缺陷是不支持任意位置的随机访问,比如:要访问list的第6个元素,必须从已知的位置(比如头部或者尾部)迭代到该位置,在这段位置上迭代需要线性的时间开销...list的迭代器失效 迭代器失效即迭代器所指向的节点的无效,即该节点被删除了。...因为list的底层结构为带头结点的双向循环链表,因此在list中进行插入时是不会导致list的迭代器失效的,只有在删除时才会失效,并且失效的只是指向被删除节点的迭代器,其他迭代器不会受到影响 二....list常用接口的模拟实现(含注释) #include #include using std::cout; using std::endl; namespace
本文内容:C与C++的最常用输入输出方式对比 更多内容请见 C/C++中的基础数据类型 C语言竟支持这些操作:C语言神奇程序分享 C/C++中的素数判定 ---- 本文目录 1.C 1.1 scanf...() 输入 1.2 printf() 输出 1.3 占位符 2.C++ 2.1 cin 输入 2.2 cout 输出 ---- 1.C 1.1 scanf() 输入 scanf(),格式化输入,C语言中最常用的输入函数...%d\n", a, b, c); return 0; } ---- 1.2 printf() 输出 printf(),格式化输出,C语言中最常用的输出函数,函数声明如下: int...cin 位于命名空间std下,使用前通常使用命名空间std,即: using namespace std; C++ 编译器会根据要输入值的数据类型,选择合适的流提取运算符来提取值,并把它存储在给定的变量中...,在一般的输入输出情况下,C++的输入输出更加便捷,语法也更易理解,成为程序员程序设计中优先考虑的输入输出方式。
目录 demo.c CMakeLists.txt 效果 注 直接上代码吧: demo.c #include #include #include...keypoints2, output); cv::imwrite("sift_image2_keypoints.jpg", output); std::cout 检测耗时...cmake_minimum_required(VERSION 3.22) project(demo) find_package(OpenCV REQUIRED) IF(UNIX) SET(CMAKE_C_FLAGS_DEBUG..."${CMAKE_C_FLAGS} -g -O0 -Wall -Wextra -Wunused-variable -DDEBUG -D_DEBUG") SET(CMAKE_CXX_FLAGS_DEBUG
而 C++语言凭借其高效性和强大的性能,与 OpenCV 的机器学习模块相结合,为实现精准且高效的目标检测算法提供了一条强有力的途径。...它涵盖了从数据预处理到模型训练再到目标检测的一系列功能组件,使得开发者能够在 C++环境下构建出完整的目标检测流程。 首先,让我们来了解一下目标检测的基本概念。...OpenCV 的机器学习模块提供了多种可用于目标检测的算法,如支持向量机(SVM)等。在 C++环境下,我们可以精心配置这些模型的参数,根据具体的目标检测任务进行调优。...当模型训练完成后,就进入了激动人心的目标检测阶段。在 C++中利用 OpenCV 的机器学习模块进行目标检测时,首先要将待检测的图像输入到训练好的模型中。...对于视频流检测,C++能够实时地读取视频帧,逐帧进行目标检测,实现对动态场景的实时监控和分析。 C++与 OpenCV 机器学习模块相结合实现目标检测算法在实际应用中有着诸多优势。
相较于C,C++中引入了string类,这使得存储字符串时不易溢出,更加安全, 而其中包含的各种操作字符串的函数,使用起来更是方便。...下面是其中几种常见的函数的使用方法: begin() //返回字符串的首个字符的下标位置 end() //返回字符串(末位+1)的下标位置 使用end()时若想取得位于末位的字符...eg: c.find(‘H’,2)表示从字符串 c 的第三个字符开始查找字符’H’ 执行find()函数,若找到了用户设置的str,返回其在c中的下标,否则返回-1,或者说 npos 的值。...insert() //在指定位置插入字符段 三种常用方法: 1)insert(2,"@@@"); //在下标为2的字符后插入字符串"@@@" 2) insert(2,3,’@’);...erase() //删除指定位置的字符 三种常用方法: 1)erase(3,1); //删除下标为 3 的字符后的 1 个字符 2)erase(first,end); //删除以first
领取专属 10元无门槛券
手把手带您无忧上云