C++
皮皮#2500
这个作者很懒,什么都没留下…
展开
-
C#调用C++ dll,C++返回类型为char*,并通过指针传出值
C#调用C++ dll,C++返回类型为char*,并通过指针传出值编写生成c++ dllUnity C#中调用C++ dll编写生成c++ dll在项目属性页修改项目类型为动态库(.dll)编写头文件,声明要导出的函数编写一个动态链接库,需要在一个头文件.h中声明你要导出的函数,并在对应的.cpp中实现需要导出的函数。同时也需要定义导出符号,注意导出符号的前缀应保持与项目名一致:在.cpp文件中,include编写好的对应头文件:生成解决方案,在工程目录下找到生成的dll,具体位置可以原创 2020-10-29 09:13:30 · 4196 阅读 · 0 评论 -
C++基本数据类型之Byte和char
C++基本数据类型之Byte和char1. 类型不同2. 范围不同3. 强制类型转换1. 类型不同char 是字符型,byte 是字节型2. 范围不同char与BYTE都是占一个字节,但char是有符号的,BYTE是无符号的,占用空间一样大,只是它们各自能表示数的范围不同而已:char: -127----+128之间(ANSI)unsigned char: 0-255之间(ANSI)3. 强制类型转换byte可以直接强制转成char,如:BYTE* p;char* s = (char*)原创 2020-10-23 16:32:43 · 8689 阅读 · 0 评论 -
C#与C++数据类型的对应关系,以及将byte数组转换为各种数据类型(int ,float,string)
C#与C++之间类型的对应How to convert a byte array to an int在byte转类型T的过程中,知道byte中存储该数据的起始位置即可,以byte转float为例:float test= System.BitConverter.ToSingle(buffer, 12);其中buffer为byte数组,12表示从第13位开始读4个字节(float占4字节),将获得的数据存入test中。...原创 2020-08-07 21:32:53 · 4696 阅读 · 0 评论 -
C++char*转string,同时输出Ascii码类型和Binary类型
#include <fstream>#include <iostream>#include <string>#include <sstream>using namespace std;int main() { int num = 3; int lengthPointCloud = 3 * sizeof(float) + 3 * sizeof(unsigned char); //头内容Ascii码格式 stringstream heade原创 2020-09-11 22:27:04 · 403 阅读 · 0 评论 -
C++动态库封装及调用
Visual Studio C++动态库封装及调用动态库封装更改项目属性添加头文件添加工程调用dll设置属性调用参考资料动态库封装更改项目属性打开项目属性页,在配置属性->常规中更改如下:在配置->链接器->常规中将exe更改为dll:添加头文件以工程MathLib.cpp为例,添加头文件MathLib.h:#ifdef MATH_API#else #define MATH_API _declspec(dllimport) #endifMATH_API原创 2020-09-11 22:19:07 · 612 阅读 · 0 评论 -
c++中的智能指针unique_ptr中get()的用法
bar是一个智能指针,p是一个普通指针:p = bar.get(); 后,bar并非被释放,也就相当于指针p和智能指针bar共同管理一个对象,所以就*p做的一切,都会反应到bar指向的对象上。原创 2020-09-09 14:21:52 · 19904 阅读 · 0 评论 -
C++整型int转字符串string
C++整型int转字符串string问题描述转换方法问题描述 在C++中进行文件读取操作的时候,想要读取某个文件夹下的所有文件,这些文件名按数字递增: 最直观的感受是用一个for循环,将文件依次读取。但是for循环中变量的增量是整型,因此需要转换成字符串。转换方法int pcdNum = 31;文件数量for (int i = 0; i < pcdNum; i++) { stringstream getFiles; getFiles << "p原创 2020-08-03 23:35:56 · 1803 阅读 · 0 评论 -
C++ std::move原理
左值、右值:左值、左值引用、右值、右值引用C++ 11 左值,右值,左值引用,右值引用,std::move, std::fowardstd::move:c++ 之 std::move 原理实现与用法总结...转载 2020-04-10 22:07:04 · 218 阅读 · 0 评论 -
C++ 多线程join()和detach()的理解
C++ 多线程join()和detach()的理解问题产生原因问题产生原因每一个程序至少拥有一个线程,那就是执行main()函数的主线程,而多线程则是出现两个或两个以上的线程并行运行,即主线程和子线程在同一时间段同时运行。而在这个过程中会出现几种情况:主线程先运行结束子线程先运行结束主子线程同时结束...转载 2020-04-10 18:31:26 · 6537 阅读 · 6 评论 -
对结构体中字符数组赋值时,出现表达式必须是可修改的左值的问题
对结构体中字符数组赋值时,出现表达式必须是可修改的左值的问题问题剖析解决方案用字符指针替代字符数组使用strcpy对结构体数组赋值使用string转载链接问题剖析在C++中为结构体中的字符数组赋值时,出现”表达式必须是可修改的左值“的错误提醒,编译报错“不可指定数据类型”:结构体定义:结构体中定义的数组:char inFile[256],使用 image.inFile="D:/…"是无...转载 2020-04-09 23:12:19 · 3027 阅读 · 0 评论 -
C++ deque类使用详解
C++ deque类使用详解定义基本操作详细链接定义 deque(双端队列)是由一段一段的定量连续空间构成,可以向两端发展,因此不论在尾部或头部安插元素都十分迅速。 在中间部分安插元素则比较费时,因为必须移动其它元素。使用之前必须加相应容器的头文件:#include <deque> // deque属于std命名域的,因此需要通过命名限定,例如using std::deq...转载 2020-04-09 20:18:16 · 1145 阅读 · 0 评论 -
C++ 头文件exception
exception标准库给我们提供了以下几个方面的异常处理支持:未捕获异常处理异常嵌套异常重抛详细信息参考:https://www.cnblogs.com/lgxZJ/p/6656390.html转载 2020-04-09 16:08:18 · 964 阅读 · 0 评论 -
C++ 指针强制类型转换
C++中,任何一个变量都必须占有一个地址,不同的数据类型占有的空间大小不一,但是他们都必须有个地址,而这个地址就是硬件访问的依据,而名字只是提供给程序员的一种记住这个地址的方便一点的方法。如:int a;float b;double c;long double d;它们所占的字节分别是4、8、8、10,而且连续存储于某个地址空间。具体不同类型所占不同字节数请转:https:/...原创 2020-04-06 22:23:13 · 427 阅读 · 0 评论 -
C++ inline内联函数
在 C/C++ 中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了 inline 修饰符,表示为内联函数。栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。在 C++ 中,可以在定义函数时,在返回值类型前面加上 inline 关键字。如:inline int Max (int a, int b){ if(a >b) ...转载 2020-04-06 16:34:54 · 98 阅读 · 0 评论 -
C++ union共用体的使用方法
C++ union共用体的使用方法定义互斥赋值sizeof( )转载链接定义union即为联合,它是一种特殊的类。通过关键字union进行定义,一个union可以有多个数据成员。例如:union Token{ char cval; int ival; double dval;};以上代码定义了一个名为Token的联合,该联合中包含了3个数据成员。互斥赋值在任意时刻...转载 2020-04-05 21:52:32 · 2334 阅读 · 0 评论 -
C++ template模板常见特性(函数模板、类模板)
「函数模板」的形式:template <class 类型参数1,class 类型参数2,...>返回值类型 模板名 (形参表){ 函数体};template 就是模板定义的关键词,T 代表的是任意变量的类型。定义Swap函数:template <class T>void Swap(T & x,T & y){ T tmp =...转载 2020-04-05 21:21:11 · 384 阅读 · 0 评论 -
CUDA未定义标识符"printf"
CUDA未定义标识符"printf":引用头文件stdio.h:#include <stdio.h>原创 2020-04-05 16:38:54 · 4434 阅读 · 0 评论 -
C++ Vector容器的push_back( )与pop_back( )函数
C++ Vector容器的push_back()与pop_back()函数push_back( )pop_back( )参考链接push_back( )函数将一个新的元素加到vector的最后面,位置为当前最后一个元素的下一个元素push_back() 在Vector最后添加一个元素(参数为要插入的值)://在容器中添加10 int num = 10;vector<int>...转载 2020-04-02 15:40:26 · 30057 阅读 · 0 评论 -
C++ &、&&、 |、|| 、|=、?: 逻辑运算符用法
C++ &、&& |、|| 与|=逻辑运算符用法&与&&|与|||=参考链接&与&&&& 表示逻辑与的意思,即为and。当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。比如 12&&23的结果就是1,12&...转载 2020-04-02 10:58:35 · 86621 阅读 · 0 评论 -
C++函数默认参数(函数传入实参个数比形参个数少)
C++函数默认参数定义参数添加顺序注意事项转载链接定义 在C++中,定义函数时可以给形参指定一个默认的值,这样调用函数时如果没有给这个形参赋值(没有对应的实参),那么就使用这个默认的值。也就是说,调用函数时可以省略有默认值的参数。如果用户指定了参数的值,那么就使用用户指定的值,否则使用参数的默认值。所谓默认参数,指的是当函数调用中省略了实参时自动使用的一个值,这个值就是给形参指定的默认...转载 2020-04-02 10:35:31 · 10396 阅读 · 1 评论 -
C++ 互斥锁std::mutex的使用
mutex(互斥量)是一个可以处于两态之一的变量:解锁和加锁。这样,只需要一个二进制位表示它,不过实际上,常常使用一个整型量,0表示解锁,而其他所有的值则表示加锁。互斥量使用两个过程。当一个线程(或进程)需要访问临界区时,它调用mutex_lock。如果该互斥量当前是解锁的(即临界区可用),此调用成功,调用线程可以自由进入该临界区。详细链接:C++11——std::mutex...转载 2020-04-01 21:28:24 · 564 阅读 · 0 评论 -
C++函数后面加“:”的含义
C++函数后面加“:”的含义在成员函数后面在构造函数后对父类进行初始化对类成员进行初始化对类的const成员变量进行初始化参考链接在成员函数后面c++成员函数后面跟“:”表示的是赋值,这是c++的特性:A( int aa, int bb ):a(aa),b(bb){}//相当于A( int aa, int bb ){a=aa;b=bb;}在构造函数后对父类进行初始化调...转载 2020-04-01 20:09:50 · 3849 阅读 · 0 评论 -
指向指针的指针(二级指针)理解
指向指针的指针(二级指针)理解在子函数中修改主函数传过来的指针的指向二维数组数和指针操作转载链接在子函数中修改主函数传过来的指针的指向#include<stdio.h>void F1(int *pp){ pp++; *pp = 9;} void F2(int **pp){ (*pp)++;}//以上函数中,接收数据的参量都是pp,而不会是*pp或者**pp ...转载 2020-04-01 19:17:42 · 224 阅读 · 0 评论 -
C++指针——指针(指针、指针与数组、指针与结构、指针与函数)的含义及赋值
C++指针——指针(指针、指针与数组、指针与结构、指针与函数)的含义及赋值指针定义指针与变量动态内存分配指针与数组、指针与结构、指针与函数转载链接指针定义 指针实际上就是地址,指针变量用来存放指针(地址)。 指针变量也是一种变量,它和不同的变量同样要占一定的存储空间。但指针变量与不同的变量不同之处在于,指针的存储空间存放的不是不同的数据,而是一个地址。 因此,在我们写程序...转载 2020-03-31 22:19:12 · 581 阅读 · 0 评论 -
uint8_t / uint16_t / uint32_t /uint64_t类型
uint8_t / uint16_t / uint32_t /uint64_t类型C语言数据基本类型分析uint8_t\uint_16_t\uint32_t\uint64_t数据来源typedef使用原因转载链接C语言数据基本类型在C语言中有6种基本数据类型:short、int、long、float、double、char1)整型:short int、int、long int2)浮点型:...转载 2020-03-29 16:49:34 · 293 阅读 · 0 评论 -
C++类构造函数
C++类构造函数不带参数的构造函数带参数的构造函数详细链接类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。不带参数的构造函数示例:#include <iostream> using namespace std; class L...转载 2020-03-27 21:17:51 · 100 阅读 · 0 评论 -
C++类(Class)的定义与实现
在C++中, 用 “类” 来描述 “对象”, 所谓的"对象"是指现实世界中的一切事物。那么类就可以看做是对相似事物的抽象, 找到这些不同事物间的共同点, 如自行车和摩托车, 首先他们都属于"对象", 并且具有一定得相同点, 和一些不同点, 相同点如他们都有质量、都有两个轮子, 都是属于交通工具等。“都有质量”、“两个轮子"属于这个对象的属性, 而"都能够当做交通工具"属于该对象具有的行为,...转载 2020-03-27 20:20:58 · 385 阅读 · 0 评论 -
C++析构函数(类的前面加上一个~)
C++析构函数析构函数介绍:示例:参考链接 析构函数是类的另一个特殊成员函数,它的作用与构造函数相反,C++规定析构函数的名字是类的前面加上一个波浪号 (~)。 析构函数不返回任何值,没有返回类型,也没有函数参数。由于没有函数参数,因此它不能被重载。换言之,一个类可以有多个构造函数,但是只能有一个析构函数。析构函数介绍:1.析构函数(destructor) 与构造函数相反,当对...转载 2020-03-27 20:14:36 · 2021 阅读 · 0 评论 -
C++使用thread类多线程编程
菜鸟教程:https://www.runoob.com/w3cnote/cpp-std-thread.html简单多线程示例:https://www.cnblogs.com/MCSFX/p/11226627.html转载 2020-03-24 15:31:26 · 258 阅读 · 0 评论 -
C++ main函数中参数argc和argv的含义
argc 是 argument count的缩写,表示传入main函数的参数个数;argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个;argv是指向指针的指针,main函数的第二个参数“char argv[]“也...转载 2020-03-27 10:17:41 · 225 阅读 · 0 评论