
C++
GISerQ.
还未到终点,你我皆黑马。
展开
-
反距离加权插值IDW计算详细步骤
主要是基于地理学第一定律,根据待插值点与样本点之间的距离的倒数来确定待插值点的值,即待插值点距离样本点越远,则受到的影响越小,反之则越大。反距离加权插值方法计算简单,计算效率和精度也较高,是较为常用的一种插值方法,通常用于温度、降雨等二维场的插值当中。原创 2022-09-09 18:00:33 · 9199 阅读 · 0 评论 -
C++:c++调用.exe文件,如matlab等其他生成的exe文件
为了将程序集成,又避免重写代码的麻烦,C++提供了可以直接调用“.exe”文件的函数,主要有三个,分别对其进行介绍:1.CreateProcess因为使用复杂,比较少用。2.WinExec主要运行EXE文件。如:WinExec(‘notepad.exe Readme.txt’, SW_SHOW);3.ShellExecute不仅可以运行EXE文件,也可以运行已经关联的文件,是最为常用的一个api,下面对其用法进行主要介绍。ShellExecute(hWnd: HWND; Operation, Fil原创 2021-12-12 16:54:58 · 6248 阅读 · 6 评论 -
OpenCV C++:提取矩阵的部分与矩阵的合并与拼接
像在matlab中可以直接对矩阵进行提取与拼接,比如在matlab中合并两个矩阵:矩阵A、B、C按行合并C=[A B]按列合并C=[A;B]同样,在使用OpenCV时,OpenCV其实也是自带了提取和拼接矩阵的函数提取矩阵A的部分到矩阵B中:#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream> using namespace c原创 2021-12-08 20:38:45 · 2712 阅读 · 3 评论 -
C++:在VS中release版本下设置断点调试,详细步骤
Visual studio 中在Release版本下设置断点调试的步骤如下:1.右键项目点击属性->c/c+±>常规->在调试信息格式中 选择 /Zi2.右键项目点击属性->配置属性->链接器->生成调试信息 选择生成调试信息(/DEBUG)一般到这就可以在release下设置断点调试了,但如果想设置完全断点可以进行下面的操作:3.右键项目点击属性->配置属性->c/c+±>优化->选择已禁用(/od)经过上面的步骤就可以在VS中的原创 2021-12-08 19:48:05 · 13935 阅读 · 3 评论 -
运行环境:在非MFC程序中,添加MFC支持,静态链接MFC库时发生错误
发生错误描述:1>正在链接…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 operator delete(void *)” (??3@YAXPAX@Z) 已经在 LI原创 2021-11-08 21:50:42 · 199 阅读 · 0 评论 -
0x00007FFEB46D3F57 (mfc140ud.dll)处(位于*.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000000
在非MFC程序中,添加MFC支持时,出现了如下错误,经调试终于解决,问题描述与解决方法如下:问题描述1:0x00007FFEB46D3F57 (mfc140ud.dll)处(位于*.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000000解决方法1:右键项目——配置属性——高级——字符集——选择多字节字符集问题描述2:若出现0x00007FFEB46D3F57 (mfc140u.dll)处(位于*.exe 中)引发的异常: 0xC0000005: 读取位置 0x00000000原创 2021-11-08 21:47:58 · 8102 阅读 · 1 评论 -
解决#define _AFXDLL or do not use /MD[d]
运行环境:在非MFC程序中,添加MFC支持,静态链接MFC库这个问题经常出现在尝试使用Visual Studio 较高版本(2008,2010)编辑较低版本(Visual C++ 6.0)时使用“在静态库中使用MFC”的情况。在网上查找方法,无非是“改成在共享DLL中使用MFC”,或者将#include <afx.h>改成<atlstr.h>等方法。第二种不推荐,因为如果使用了afx.h中的函数和变量,atlstr.h没有怎么办?解决方案:项目属性(Alt+F7)——C/C++—原创 2021-11-04 21:19:11 · 1816 阅读 · 0 评论 -
error C2872: ‘byte‘: ambiguous symbol
这个问题是由于使用了较新的C++17标准语言,因为Windows旧的SDK定义有一个byte的类型,但在C++17里也有定义std::byte类型,这样就会造成重复定义。解决方法:1.可以预定义一个宏:_HAS_STD_BYTE=0,这样设置就可以解决问题;2.第二种方法就是不要使用“using namesapace std”,对于std里面包含的string、vector等,在使用时前面加std,如“std::string”、“std::vectora”。...原创 2021-11-03 20:21:23 · 1663 阅读 · 0 评论 -
C++:OpenCV批量读取文件夹下的文件
OpenCV批量读取文件夹下的文件批量处理图片时,可以使用OpenCV遍历文件夹下的文件来实现,OpenCV在2.X和3.X版本有较大的改动,所以有些功能并不通用。以下是在OpenCV2.X和3.X中较为简单的遍历方法。在OpenCV 2.X的版本中包含了contrib模块,里面封装了一个Directory类,用该类就可以实现对于目录的遍历操作,在该内部包含了三个成员函数:1)GetListFiles:遍历指定文件夹下的所有文件,不包括指定文件夹内的文件夹;2)GetListFolders:遍历指定原创 2021-06-07 21:20:19 · 3099 阅读 · 1 评论 -
C++:求vector容器中最大最小值的位置
在使用C++中的vector容器时,常会用到求vector中的最大最小值以及最大最小值的位置。首先说一下求最大最小值,最简单的方法就是遍历容器内的所有数据求出最大最小值,但这种方法耗时且代码繁琐,不推荐,C++中对于vector容器有封装好的函数可以计算,如下面代码:求最大最小值: #include <vector> #include <algorithm>//需包含该头文件 vector<double>a; double amax=*max_element(原创 2021-04-11 22:01:27 · 4487 阅读 · 0 评论 -
C++:使用vector中accumulate求和计算出错
vector中accumulate的一般用法为:vector<double>a;double b=accumulate(a.begin(),a.end(),0);第三个参数是累加的初始值。注意:accumulate 函数第三个参数初值 赋值的时候一定要注意 所累加的vector的类型,如果vector是float或者double型, 赋值的时候如果给0,而不是0.0,那么就会出现累加的小于1的数都是0;因此如果是float或double类型的vector,使用accumulate时第原创 2020-10-14 16:24:35 · 4775 阅读 · 1 评论 -
OpenCV:关于Mat的定义及简单运算
Mat类型定义:CV_<bit_depth>(S|U|F)C<number_of_channels>1、bit_depth—位数—代表8bite,16bites,32bites,64bites 对应每个像素值变量类型为char、short、int、long2、S|U|F S代表signed int有符号整形 U代表unsigned int无符号整形 F代表float单精度浮点型3、C<number_of_channels>----代表—一张图片的通道原创 2020-10-08 10:23:29 · 1446 阅读 · 1 评论 -
C++:messagebox创建提示窗口
简介:MessageBox指的是显示一个模态对话框,其中包含一个系统图标、 一组按钮和一个简短的特定于应用程序消息,如状态或错误的信息。消息框中返回一个整数值,该值指示用户单击了哪个按钮。这个方法在unity的脚本调试中非常重要,用于找到程序报错的位置(unity中无法使用断点进行定位)语法:MessageBox( HWND hWnd, LPCTSTR lpText, LPCTSTR lpCaption, UINT uType)命名空间using System.Windows.Forms;原创 2020-09-14 11:29:50 · 1883 阅读 · 0 评论 -
VS2017下配置OpenCV
opencv提供了丰富的图像处理功能,这里介绍在vs2017下opencv开发环境配置。1.首先下载好OpenCV下载地址:https://opencv.org/releases/这里以4.3.0版本为例进入下载官网后,点击Windows下载下载好后双击opencv-4.3.0-vc14_vc15.exe文件,选择安装路径,opencv包就安装好了。2.配置环境变量右键“我的电脑”->“属性”->“高级系统设置”->“环境变量”->“path”选择“编辑”->原创 2020-06-23 21:06:14 · 590 阅读 · 0 评论 -
C++:使用vector容器中的erase和swap释放内存
使用vector清除元素的主要方法有使用clear()和swap(),但使用clear不能释放内存,对于处理大量数据的时候就需要释放内存来提高速度,这时就需要使用swap。如果是要清空容器中的数据可以直接使用swap:#include <vector>#include <iostream>using namespace std;#include <algor...原创 2020-04-22 11:54:36 · 3684 阅读 · 0 评论 -
VS2017编译配置GDAL库,详细!
1.下载GDAL官方下载地址为https://trac.osgeo.org/gdal/wiki/DownloadSource,我下载的版本是gdal-2.2.3。下载时下载zip格式的压缩包,下载好后解压到自己知道的位置,比如我解压到D:\GDAL。2.修改源代码找到解压目录中的nmake.opt文件,建议用notepad++或者VS的编辑器打开,我这里用notepad++打开,例如本文的...原创 2020-04-11 20:28:21 · 3295 阅读 · 4 评论 -
C++矩阵库Eigen在VS2017下的配置及简单使用
Eigen库的下载地址:http://eigen.tuxfamily.org/index.php?title=Main_Page1.下载文件并解压:2.打开VS2017,新建项目:新建->项目->Visual C++ -> Windows桌面->Windows控制台应用程序。在解决方案资源管理器中,右键项目名称,选择属性。3.在属性页面找到c /c++ -&g...原创 2020-03-28 16:32:04 · 2717 阅读 · 0 评论 -
C++:使用getline读取文本文件
之前在使用C++中的getline读取文本文件时由于没有仔细看getline的定义,导致出了错:在读取文本文件时未读取到文件中的第一行。错误的源代码如下:vector<string>readfile(string s1,vector<string>v1){ ifstream infile; infile.open(s1, ios::in); if (!infil...原创 2020-02-28 17:37:53 · 6099 阅读 · 3 评论 -
C++:寻找vector类型数据中的最大最小值
定义了vector类型的数据,要找到其中的最大最小值,其实在C++中的algorithm头文件下就有直接的函数可以使用:#include <vector>#include <algorithm>vector<double>s;double min = *min_element(s.begin(), s.end());//返回s中的最小值double ...原创 2020-02-22 19:35:04 · 5096 阅读 · 0 评论 -
C++:使用Vector报错:未处理的异常 std::out of range
作为一个小白在定义函数时使用到了vector,使用的时候差不多如下:void abc(vector<double>a1,vector<double>a2,vector<double>a3){ for(int i=0;i<a1.size();i++) { a3[i]=a1[i]+a2[i]; }}大概意思就是这样,在使用这个函数的时候就报...原创 2020-02-14 17:33:41 · 7468 阅读 · 1 评论 -
C++:vector<string>转换为vector<double>
C++中vector转换为vector,在这做一下记录。inline double toDouble(const string& str){ return stod(str);}int main(){ transform(s1.begin(), s1.end(), back_inserter(s2),toDouble);//vector<string>转换为 ...原创 2020-02-06 19:24:12 · 2342 阅读 · 1 评论 -
C++:以特定标识符分割字符串
今天在使用C++时,遇到了一个问题,要把读到vector中的字符串按特定的标识符来分割,方便之后的使用。在解决这一问题时主要用到了find和substr这两个函数,分割字符串函数代码如下:vector<string> splitWithStl(const string str, const string part){ vector<string> resVec;...原创 2020-02-06 19:17:31 · 4434 阅读 · 0 评论 -
C++读取文本文件的几种方法
前几天要用到C++读取文本文件,就学习了一下几种不同的读取方法:文本文件内容如下:第一种:直接读取,以空格换行 int main() { ifstream infile; infile.open("qqzl.txt", ios::in); if (!infile.is_open()) { cout << "读取文件失败" << endl; retu...原创 2019-12-19 17:39:08 · 89936 阅读 · 14 评论 -
关于C++中cout.precision()的使用以及控制输出的小数位数.
在C++中可以使用cout.precison(val)来控制浮点数的输出精度,但并不是意味着仅使用cout.precison(val)可以控制输出结果的小数点位数,在此记录一下,就当做学习笔记。下面先做一下简单的验证:#include <iostream>using namespace std;int main(){ double x = 1.23456789; cout...原创 2019-07-25 15:37:22 · 2038 阅读 · 0 评论