学习C++
C++Primer Plus,模板、STL、数据结构、算法、重点难点语法
三石目
略知一二机器视觉
展开
-
为什么用c++开发dll接口要用char*而不能string
1、string是stl的内容,不能确定调用者的stl版本和你的相同,甚至你可能用的Visual C++编译,你同事用的G++,会存在二进制兼容性问题,无法正常调用dll接口;2、当然如果应用程序和DLL接口都是你一个人写,编译环境一样,想用什么都可以;3、开发对外的dll接口时,对于其他数据类型不要用stl的东西,如vector,map等,使用底层的数据类型,数组,struct,union等...原创 2022-04-23 17:44:32 · 1848 阅读 · 0 评论 -
C++构造函数中冒号作用及explicit关键字
构造函数中冒号作用,类给成员变量赋值,更适用于成员变量的常量const型。class myClass{/*构造函数中冒号作用,类给成员变量赋值,更适用于成员变量的常量const型。*/public : myClass();// 构造函数,无返回类型,可以有参数列表,这里省去 ~myClass();// 析构函数 int a; const int b;}myClass::myClass():a(1),b(1)// 初始化列表{}myClass::myClas原创 2022-04-18 17:53:24 · 518 阅读 · 0 评论 -
关于C++的线程thread,lambda,for循环动态生成线程
1、通过共享指针获取线程返回值int main(){ vector<thread> vThread; vector<int*> nRst(5); for (size_t i = 0; i < 5; i++) { nRst[i] = new int(0); } for (int i = 0; i < 5; i++) { int a = 1; int b = 2;原创 2022-04-18 15:09:38 · 1788 阅读 · 0 评论 -
使用C++下载URL图片
使用curl有些URL会下载失败,即下载下来的图片是空的。该方法亲测有效。另外string转LPCWSTR时也可以参考。bool DownloadUrlmon(string strURL, string strPath){ size_t len0 = strURL.length(); int nmlen0 = MultiByteToWideChar(CP_ACP, 0, strURL.c_str(), len0 + 1, NULL, 0); wchar_t* bufferURL = new w原创 2021-11-11 15:02:06 · 2558 阅读 · 0 评论 -
C#调用C++编译的dll,函数参数带字符串的情况
(2条消息) C++和C#混合编程,C#调用C++生成的dll以及字符串传递_Ripo_za的博客-CSDN博客原创 2021-05-27 18:50:44 · 283 阅读 · 0 评论 -
C++ 进制转换
16进制、2进制与10进制的互相转换string htoi(string hStr){ return std::to_string(std::stoi(hStr, nullptr, 16));}string itoh(string iStr){ std::stringstream ss; long long temp = std::atoll(iStr.c_str()); ss.setf(std::ios_base::hex, std::ios_base::basefield);.原创 2021-04-13 23:16:35 · 228 阅读 · 0 评论 -
关于链表
相对于数组,插入删除数据时不需要移动其他元素。#define LEN sizeof(struct node)struct node{ int data; struct node *next;};int main(){ struct node* p, * pl, * head; head = p = (struct node*)malloc(LEN); scanf("%d", &p->data);/*头结点的数据成员*/ while (p->data != 0原创 2021-04-13 11:22:05 · 119 阅读 · 0 评论 -
C++把函数名作为变量传递
using MyFuncType = string(*)(string, string);string add0(string a, string b){ return a + b;}string add1(string a, string b){ return a + b + a;}int main(){ MyFuncType fun = add0; string strOut = fun("aa","bb");}原创 2020-09-24 18:41:53 · 1458 阅读 · 0 评论 -
C++序列化工程文件时的相关知识点
1、文件的写入与读取; ifstream input("test.svl", ios::in | ios::binary); int nLength; string strTemp; input.read((char*)&nLength, sizeof(int)); strTemp.resize(nLength); input.read((char*)&strTemp[0], nLength); std::cout << strTemp; ofstream原创 2020-08-27 17:28:30 · 237 阅读 · 0 评论 -
github中C++实现的http服务库
cpp-httplib:只有一个头文件,但仅支持单线程;cpp-netlib:依赖boost;CppNet:无法获取Body,无法解析json;Crow:依赖boost,不完全支持windowEvHttpServer:linux下,不支持windowfibio:依赖boost旧版本;httpd:linux下,不支持windowhttp-server:linux下,不支持windowhttpsys:star少,无法使用,不返回数据libevent:linux下,不支持win原创 2020-08-17 14:05:20 · 1857 阅读 · 0 评论 -
c++的并发操作(多线程)
https://www.cnblogs.com/yskn/p/9355556.html转载 2020-07-30 19:30:56 · 219 阅读 · 0 评论 -
C++中string的UTF-8格式
string stringUTF8(const string& str){ int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0); wchar_t* pwBuf = new wchar_t[nwLen + 1]; ZeroMemory(pwBuf, nwLen * 2 + 2); ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), str.length(), p.原创 2020-06-15 14:13:34 · 4182 阅读 · 1 评论 -
使用C++解析XML文件
该xml文件为labelImg.exe生成,通过C++获取到该文件中的标签名字与位置,然后保存到容器中供后续方便调用。1、下载库tinyxml;2、将tinyxml.h、tinystr.h、tinystr.cpp、tinyxml.cpp、tinyxmlerror.cpp、tinyxmlparser.cpp这两个文件拷贝到工程下;3、引入两个头文件,#include "tinystr.h",#include "tinyxml.h";#include <iostream&g...原创 2020-05-26 15:01:53 · 1539 阅读 · 0 评论 -
C++中常用函数/语法备忘
1、将字符串以逗号分离后保存到字符串容器vector<string> SplitStr(string strInput){ vector<string> vecStr; for (int i = 0; i < s.size(); ++i) { if (s[i] == ',') { s[i] = ' '; } } istringstream out(s); string str; while (out >> str) { vecS原创 2020-05-15 11:24:30 · 354 阅读 · 0 评论 -
设计模式:单例模式
通过单例模式可以保证系统中,应用该模式的类一个类只有一个实例。即一个类只有一个对象实例。例如特定情况下的相机、运动控制卡等硬件实例都可以用单例,避免出现重新构造时出错。一般使用饿汉模式,在类加载时就完成了初始化,所以类加载比较慢、获取对象的速度快、以空间换取时间模式、线程安全。#include "pch.h"#include <iostream>using name...原创 2020-02-20 10:15:41 · 167 阅读 · 0 评论 -
设计模式:模板方法模式
#include "pch.h"#include <iostream>using namespace std;class Process{public: virtual void before() { cout << "before!" << endl; } void Run() { before(); cout <&l...原创 2020-02-18 15:51:56 · 142 阅读 · 0 评论 -
设计模式:抽象工厂模式
C++实现,以运动控制卡为例。#include "pch.h"#include <iostream>using namespace std;/*操作运动的类*/class InterRUN{public: virtual void Home() = 0; virtual void SetSpeed(int) = 0;};class GugaoRUN : ...原创 2020-02-19 11:52:20 · 261 阅读 · 0 评论 -
VS中统计代码行数的一种方法
也可以下载软件“linecount.exe”原创 2020-01-21 14:42:14 · 472 阅读 · 0 评论 -
模板template的简单应用
函数模板template<typename T>bool compare(const T& value1, const T& value2){ return value1 == value2;}int main(){ cout << compare(1, 10) << endl; cout << compare...原创 2020-01-10 16:01:51 · 189 阅读 · 0 评论 -
指针形式的图像的保存与转换
视觉开发时用到的相机原始数据大部分都是以指针的形式存在,在使用之往往需要确保图像是否正确,通过下面的函数可以直接保存图像。实现如:(MFC下)bool SaveGrayImage(LPCTSTR fileName,BYTE* pImageData,int nWidth,int nHeight);//声明SaveGrayImage(_T("1.bmp"),pImage,Width,Height)原创 2017-11-13 18:07:30 · 2392 阅读 · 0 评论 -
通过指针传递结构体
typedef struct STRUCT_TEST_{ bool bEnable; int nValue; char strDisplayName;}STRUCT_TEST;void haha(void* pData);void haha(void* pData){ STRUCT_TEST *stu; stu = (STRUCT_TEST *)pData; stu-&...原创 2019-12-31 09:21:26 · 580 阅读 · 0 评论 -
回调函数的原理与C++实现
相关链接:https://www.zhihu.com/question/19801131/answer/27459821里面有很多通俗易懂的原理,这里不过多解释,以其中一个商店买东西的情景实现。main函数/*你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的...原创 2019-12-30 16:31:43 · 520 阅读 · 0 评论