C++
文章平均质量分 51
高祥xiang
兴趣和努力伴随着我一直走下去,keep,Never give up!
展开
-
ASCII码对照表
ANSI全称(American National Standard Institite)美国国家标准学会(美国的一个非营利组织),首先ANSI不是指的一种特定的编码,而是不同地区扩展编码方式的统称,各个国家和地区所独立制定的兼容ASCII。但互相不兼容的字符编码,微软统称为。原创 2023-02-15 15:07:51 · 390 阅读 · 0 评论 -
C++ 解决string转为char*中文乱码问题
【代码】C++ 解决string转为char*中文乱码问题。原创 2022-11-15 15:59:23 · 1487 阅读 · 1 评论 -
VS C++项目包含头文件引用函数却提示“未定义标识符”问题解决
vs2017 中 C++ 项目,包含自定义的动态库头文件,却提示 “未定义标识符”原创 2022-07-04 13:08:24 · 71827 阅读 · 6 评论 -
C++ 读取目录中所有文件名称
本次介绍的方法依赖 dirent,在github官方地址https://github.com/tronkko/dirent下载下来,解压后使用。#include <dirent.h>读取目录中所有文件名称方法如下:static inline int read_files_in_dir(const char *p_dir_name, std::vector<std::string> &file_names) { DIR *p_dir = opend...原创 2021-09-03 13:58:10 · 1363 阅读 · 0 评论 -
判断点在直线的左右哪一侧
方法一:采用几何计算,求面积法。转载:http://blog.csdn.net/modiz/article/details/9928955注意向量是有方向的...判断 某一点在直线左右侧左右方向是相对前进方向的,只要指定了前进方向就可以知道左右(比如指定前进方向是从直线的起点到终点).判断点在直线的左侧还是右侧是计算几何里面的一个最基本算法.使用矢量来判断.定义:平面上的三点P1(x1,y1),P2(x2,y2),P3(x3,y3)的面积量:S(P1,P2,P3)=|y1 y2 y3..转载 2021-09-03 12:02:51 · 1825 阅读 · 0 评论 -
vector 内存释放
vector : C++ STL中的顺序容器,封装数组1. vector容器的内存自增长与其他容器不同,其内存空间只会增长,不会减小。先来看看"C++ Primer"中怎么说:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元素、撤销旧空间,这样性能难以接受。因此STL实现者在对vector进行内存分配时,其实际分配的容量要比当前所需的空间多一些。就是说,v.转载 2021-09-03 11:18:38 · 5031 阅读 · 0 评论 -
C#调用C++ dll函数传参及参数类型转换
一、简述在C#中调用C++版的dll函数时,因为是不同的语言,参数类型也不尽相同,需要做一些转换。因为在网上能找到的答案也是很杂乱,对此不懂的人会搞到发狂。最近碰到一些项目需要在C#中调用C++版dll,所以一通捣鼓,总结了部分经验。【提示:C#调用C++库,需要dll和lib就可以了,不需要头文件】二、亲测有效的一些参数类型转换1、基本类型int、float、bool,C++中与C#中是相同的;(1)C++ dll 函数void init(int a, float b, bool原创 2021-08-31 14:33:08 · 2573 阅读 · 0 评论 -
C++ Windows下Glog日志库安装使用教程
2018年是我写过一个关于Glog使用的教程(https://blog.csdn.net/qq_27278957/article/details/84648912),但是最近再使用时,发现和当时使用方法有所不同,所以再重新整理一份。一、简述Google Glog 是一个C++语言的应用级日志记录框架,提供了 C++ 风格的流操作和各种助手宏。二、环境windows 10 + vs2017 + Glog v0.5.0+ cmake三、安装Glog1、在Glog官方中下载Glog代码,.原创 2021-08-30 20:02:06 · 5215 阅读 · 4 评论 -
C/C++ 创建多级目录(转)
C运行时库提供的创建目录的函数_mkdir(),在上级目录不存在时会创建失败。所以自己实现了一下创建多级目录,无论上级目录是否存在。#include <iostream>#include <vector>#include <io.h>#include <list>#include <direct.h>using namespace std;//得到文件路径的目录string GetPathDir(string filePat转载 2021-08-28 17:51:08 · 1810 阅读 · 0 评论 -
C++ const char* 转 char* 方法
直接使用C++标准转换运算符const_cast :const char* ch = "BDEF";char *sh = const_cast<char *>(ch);关于 Const_cast 的介绍,可以参考博文:https://www.cnblogs.com/ider/archive/2011/07/22/cpp_cast_operator_part2.html原创 2021-08-28 17:29:51 · 4489 阅读 · 0 评论 -
C++ char二维数组使用总结
图1第1步,创建char双指针变量bgFrames_path,并对他分配第一维内存;然后再对所有的第一维分配内存,创建二维指针数组; 第2步,创建临时的char一维数组fileName,用sprintf_s函数对fileName赋值; 第3步,用strcpy函数对bgFrames_path的第一维数组进行拷贝赋值; 第4步,传入参数使用。 最后记得释放内存;...原创 2021-08-28 17:26:21 · 3232 阅读 · 0 评论 -
C++ int一维指针数组和二维指针数组使用总结
图1说明:当我们需要二维数组作为引用参数时,这时就可以用到双指针;因为使用双指针容易出现问题,所以最好用指针数组来代替(单指针);如图1所示,双指针保存信息是“多个目标,且每个目标包含6个参数”;用指针数组地址传参。接下来进入 API_detect_Path() 函数,看下内部赋值操作,如图2:图2vecDstboxs是个vector双层矢量集合,临时保存需要导入dstBoxs中的信息。std::vector<std::vector<int> > ...原创 2021-08-28 17:22:45 · 518 阅读 · 0 评论 -
C++ 自我对指针使用中的一些理解总结
以下举例类型为整型int,对于其他基础变量类型也同样适用。C++ int* 传参数含义两种理解:1、传入一个int整型变量的地址,修改此变量的值,可传出修改后的值;2、传入一维数组;如果传入参数前对int*参数赋值为null,那么在函数内对此参数的任何修改都无法传出去。 如果传入参数前已经对int*参数进行初始化内存,比如:int* boxes = int[10]; 那么传入的就是一维数组的首地址;在函数内对一维数组内的值进行修改,就可以传出修改后的值。C++ int** 传参数含义原创 2021-08-28 17:13:41 · 82 阅读 · 0 评论 -
C++ 引用传递与指针传递区别(转)
从概念上讲。指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量)。在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质上的不同的:指针传递参数本质上...转载 2021-08-28 16:19:59 · 648 阅读 · 0 评论 -
C++ 位运算符介绍
因转载于https://blog.csdn.net/wuguai4/article/details/7311953,就直接上链接,不花费时间整理了。转载 2020-08-06 15:18:33 · 202 阅读 · 0 评论 -
OpenCV 将OpenCV环境嵌套在C++项目中
概述这是以前写的项目总结,今天发出来。使用vs2010创建的opencv C++项目,配置好OpenCV,当项目发给同事使用,还需要配置opencv路径,这样就有点麻烦了!有种方法方式,可以省去这个配置的麻烦(前提同事使用的也是vs2010)。方法在项目的根目录创建两个文件夹,分别是thirdparty、lib 。thirdparty文件夹中放置opencv中头文件两个目录,如图1...原创 2020-03-06 14:20:02 · 1476 阅读 · 0 评论 -
C++ stack,STL stack详解
stack 是容器适配器的一种。要使用 stack,必须包含头文件 <stack>。stack就是“栈”。栈是一种后进先出的元素序列,访问和删除都只能对栈顶的元素(即最后一个被加入栈的元素)进行,并且元素也只能被添加到栈顶。栈内的元素不能访问。如果一定要访问栈内的元素,只能将其上方的元素全部从栈中删除,使之变成栈顶元素才可以。stack的定义如下:template < ...转载 2020-02-19 21:06:07 · 836 阅读 · 0 评论 -
C++链表及其创建
链表是由一系列连接在一起的结点构成,其中的每个结点都是一个数据结构。链表的结点通常是动态分配、使用和删除的,允许链表在程序运行时增大或缩小。如果需要将新信息添加到链表中,则程序只需分配另一个结点并将其插入到系列中。如果需要从链表中删除特定的信息块,则程序将删除包含该信息的结点。链表对数组和矢量的优点尽管链表的编码和管理比数组更复杂,但它们有一些明显的优势。首先,链表可以容易地扩大或缩小。...转载 2020-02-19 17:44:33 · 796 阅读 · 0 评论 -
C++ Struct与Class的区别与比较
概述之前只知道在C++中类和结构体的区别只有默认的防控属性(访问控制)不同,struct是public的,而class是private的。但经过上网查资料才发现,除了这个不同之外,还有很多的知识点需要掌握。下面就听我一一道来~1、首先比较一下C中的结构体和C++中的结构体区别C++中的struct是对C中的struct进行了扩充,所以增加了很多功能,主要的区别如下图所示:上面罗...转载 2020-02-01 20:18:22 · 482 阅读 · 0 评论 -
C++ explicit关键字详解
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明...转载 2020-02-01 16:42:57 · 984 阅读 · 1 评论 -
C++ 操作符重载--什么时候需要自定义赋值操作符
先来看这么一个例子class Test {private: int *ptr; public: Test(int i = 0) { ptr = new int(i); //构造函数 } void setValue(int i){ *ptr = i; //传值 } void myPrint() { cout << *ptr <&l...转载 2020-02-01 16:24:07 · 496 阅读 · 0 评论 -
C++ 负数的二进制表示
问题: 假设有一个 int 类型的数,值为5,那么,我们知道它在计算机中表示为:00000000 00000000 00000000 000001015转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。-5在计算机中如何表示?在计算机中,正数是直接用原码表示的,如单字节5,在计算机中就表示为:0000 0101。负数以其正值的补码形式表示,如单字节-5...转载 2020-01-17 20:48:58 · 7038 阅读 · 0 评论 -
C++ 类成员变量初始化顺序
首先,看一段程序:#include <iostream>using namespace std; class A{public: A() :n2(0), n1(n2 + 2) {} //~A(); void print() { cout << "n1:" << n1 << " , n2:" <&l...转载 2020-01-16 23:02:50 · 2871 阅读 · 0 评论 -
C++ 共用体
注:此文是原作者将 《C++ Primer 第6版》中关于共用体的内容复写了一遍,书中介绍的很详细,我就转载了。基本语法共用体(union)是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型,也就是说,共用体只能存储int、long或double,而结构体可以同时存储int、long和double。共用体的语法与结构体相似,但含义不同。请看下面声明:union...转载 2019-12-06 18:04:35 · 550 阅读 · 0 评论 -
C++ 已知起始时期、截止日期,计算相差多少天
1、全局变量int g_nSurplusDays = 0; //剩余天数int g_nCheckYear = 1901; //校验年份int g_nCheckMonth = 0; //校验月份int g_nCheckDay = 0; //校验日int g_nCheckHour = 0; //校验时int g_nCheckM...原创 2019-10-29 17:05:44 · 1473 阅读 · 0 评论 -
C++ 已知起始日期和使用天数,计算截止日期
1、全局变量int g_nCheckYear = 1901; //校验年份int g_nCheckMonth = 0; //校验月份int g_nCheckDay = 0; //校验日int g_nCheckHour = 0; //校验时int g_nCheckMinute; //校验分int g_nEndYea...原创 2019-10-29 16:43:10 · 2573 阅读 · 0 评论 -
C++ error c3872: “0x3000”: 此字符不允许在标识符中使用
在复制黏贴代码时,经常会出现这个错误,原因如下:0x3000是汉语的空格,也就是全角空格,相当于一个汉字,但你又看不见它。你知道的,像逗号,有半角(,)和全角(,)之分的,其实空格也有。0x3000是全角的空格,0x20是半角的空格。最好把这个语句的后面空白部分,都删除掉,免得有不可见的全角空格。比如这段很简单的代码,即使语法没有问题运行会出错:#include<stdi...转载 2019-10-29 14:51:19 · 1697 阅读 · 0 评论 -
MFC CString 与 int 之间的互转
1. CString 转 intint n = 0;CString str = _T("123");n = _ttoi(str);2. int 转 CStringint n = 0; CString str; str.Format(_T(%d) , n);原创 2019-10-29 14:48:36 · 1372 阅读 · 1 评论 -
MFC 获取系统当前时间
1 使用CTime类CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime(); str=tm.Format("现在时间是%Y年%m月%d日 %X %H:%M:%S");MessageBox(str,NULL,MB_OK);%a:周的英文缩写形式。%A:周的英文全名形式。%b: 月的英文缩写...转载 2019-10-29 14:45:03 · 964 阅读 · 0 评论 -
error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCR...
问题描述MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用Debug\jk.exe : fatal error LNK1120: 1 个无法解析的外部命令error LNK2001: unresolved external symbol _WinM...转载 2019-03-28 17:50:18 · 4441 阅读 · 3 评论 -
C++ cin.ignore()的用法详解
cin.ignore()函数是C++标准输入流(cin)中的一个方法。cin.ignore()函数中有两个参数,分别为数值型的a 和 字符型的 ch ,即cin.ignore( a, ch )。它表示从输入流 cin 中提取字符,提取的字符被忽略,不被使用。而每抛弃一个字符,它都要进行计数和比较字符:如果计数值达到 a 或者被抛弃的字符是 ch ,则cin.ignore() 函数执行终止;否则,它...转载 2019-03-30 19:58:52 · 10167 阅读 · 0 评论 -
C++ cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
1、cin2、cin.get()3、cin.getline()4、getline()5、gets()6、getchar()附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符1、cin>>用法1:最基本,也是最常用的用法,输入一个数字:#include <iostream>...转载 2019-03-30 19:36:04 · 345 阅读 · 0 评论 -
vs "error LNK1104: 无法打开文件“mfc100.lib””等系统库文件不存在问题解决
问题描述在使用vs2010时,遇到一些莫名其妙的vs系统库文件不存在等问题,例如:error LNK1104: 无法打开文件“mfc100.lib问题解决一般是我们在引用第三方库文件时,忘记勾选 “从父级或项目默认设置继承(I)” ,所以才会导致一些vs自带lib文件无法使用的问题。右击项目 -- 属性 -- 配置属性 -- VC++目录 -- 常规 -- 库目录 -- 勾选“从父...原创 2019-03-15 14:13:35 · 5390 阅读 · 3 评论 -
vs "error C1083: 无法打开包括文件:“SDKDDKVer.h”: No such file or directory"等系统文件不存在问题解决
问题描述在使用vs2010时,遇到一些莫名其妙的系统文件不存在等问题,例如: error C1083: 无法打开包括文件:“SDKDDKVer.h”: No such file or directory IntelliSense: 无法打开 源 文件 "SDKDDKVer.h" IntelliSense: 无法打开 源 文件 "afxwin.h" 问题解决一...原创 2019-03-15 14:05:45 · 6544 阅读 · 0 评论 -
opencv Mat与Vector、Mat与数组、Vector与数组之间互转 详解
1、Mat与vector互转reshape()函数返回的Mat,即是修改通道、行、列后的矩阵,是原矩阵,并没有进行矩阵的拷贝操作,这个在官方文档中介绍到了。#include <opencv2/opencv.hpp> using namespace cv;using namespace std; /***************** Mat转vector ******...转载 2020-12-15 09:24:32 · 9723 阅读 · 0 评论 -
冒泡排序算法优化
冒泡排序冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从A到Z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。【引用于“冒泡排序”百度百科】优化前代码// bubble_sort.cpp : 此文件包含 "mai...原创 2019-02-15 10:15:19 · 381 阅读 · 0 评论 -
C++ _T()函数和_L()函数介绍
_T("")是一个宏,他的作用是让你的程序支持Unicode编码,因为Windows使用两种字符集ANSI和UNICODE,前者就是通常使用的单字节方式,但这种方式处理象中文这样的双字节字符不方便,容易出现半个汉字的情况。而后者是双字节方式,方便处理双字节字符。转载 2017-09-15 14:59:33 · 24910 阅读 · 0 评论 -
C++ 随机函数rand()和srand()的用法
一、rand() 函数名:rand功能:随机数发生器用法:int rand(void);所在头文件: stdlib.h函数说明 :rand()的内部实现是用线性同余法做的,它不是真的随机数,因其周期特别长,故在一定的范围里可看成是随机的。...转载 2019-04-18 15:44:27 · 1622 阅读 · 0 评论 -
c++ 获取当前时间 精确到毫秒或者秒
C++获取当前时间,分别精确到ms和s1、精确到毫秒// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <windows.h>#include <iostream> using namespace std; int main(int argc, _TCHA...转载 2019-04-18 16:12:01 · 5438 阅读 · 0 评论 -
C++ 读写文件
掌握文本文件读写的方法了解二进制文件的读写方法C++文件流fstream // 文件流ifstream // 输入文件流ofstream // 输出文件流//创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文件#include<iomanip>#include<fstream>void main(){ ofstre...转载 2019-04-18 16:31:47 · 744 阅读 · 0 评论