
c++
一个新新的小白
一个青年学生来学习
展开
-
ros中使用c++对已录bag解析套路
在自动驾驶中,有时在测试过程中无法对运行过程中的各个环节进行判断,这时则需要使用ros中的录包功能对运行中各个topic进行录制,如果向一股脑的将所有topic进行录制只需要运用一下命令对其录制。rosbag record -arosbag record有很多具体的命令,这里不做详细记录,有兴趣的可以自行百度,在获得录制后的bag后如何对其录制的数据进行解析或者保存呢?这里有两种方法:一:使用命令rosbag paly对数据包进行回放,然后通过自己手写订阅某个topic的程序或者ros中已有的工具对b原创 2020-11-05 09:46:12 · 2260 阅读 · 2 评论 -
c++中使用stringstream以及创建txt及其写入的方法以及注意事项
c++中经常会遇到将自己项目中的某些数据写入txt文档保存下来的操作,通常我们会想到运用FILE的文件操作方法,但是对于c++来说,我通常会使用std::ofstream来创建一个txt文档,用法很方便。现将写使用过程中遇到的坑进行详细记录。话不多说,直接上代码:1、在写入txt过程中应有一个如果没有txt文件应先创建文档的操作。代码为:std::ofstream fout;fout.open("xxx.txt", std::ios::out | std::ios::app);定义一个输出流,st原创 2020-11-05 09:08:39 · 3739 阅读 · 0 评论 -
ROSz中自定义消息,并将其放入topic中发布全过程
ros是机器人操作系统的简称,现多用于自动驾驶中的某些领域中,最近工作中会用到ros采集车辆操作信息,但ros包含的已有的消息类型不足以满足车辆所有操作信息的发布,故需在ros中重新定义消息类型并将其发布。一、ros内部自带的消息类型:1、std消息std消息属于基本数据类型消息。2、geometry消息geometry消息属于空间数据描述。3、sensor消息sensor消息属于传感器消息可以看到ros中自带的消息已经很全,但是还是不能够满足项目需求,因此需要自定义消息内容。现将其过程总结原创 2020-11-02 14:22:01 · 1049 阅读 · 0 评论 -
c++计时器以及定时器(timer_*)相关知识点记录
最近项目中需要用到c++中定时器来启动某些预定义好的函数,达到某些目的因此着重对c++中相关定时器进行了学习,现将其记录如下:一、具体步骤一个定时器从创建、初始化、到删除一共分为三个不同的函数:(1)、timer_create()----创建定时器int timer_create(clockid_t clock_id,struct sigevent *evp, timer_t * timerid)代码中可以通过调用timer_create创建定时器,每个进程拥有各自单独的定时器,并不是在fork转载 2020-11-02 11:24:31 · 2456 阅读 · 0 评论 -
opencv 读取 普通视频、以YUV数据格式保存的视频 以及 图片序列的方法
在刚入门opencv的阶段,读取图片以及视频是作为初学者最需要掌握的方法。最近在上智能视频分析这门课程,通过几次实验课,发现针对不同的数据分别对应着不同的载入方式,特此开贴,记录下来,一是可以与人分享,共同进步...转载 2019-06-05 16:36:16 · 2457 阅读 · 0 评论 -
C++Socket通信总结(附C++实现)
一、Socket是什么 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组...转载 2019-05-23 11:21:35 · 4730 阅读 · 2 评论 -
memcpy函数
【FROM MSDN && 百科】原型: void *memcpy(void *dest, const void *src, size_t n);#include<string.h>功能:从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中Cop...原创 2019-03-28 14:22:51 · 13615 阅读 · 1 评论 -
#ifdef __cplusplus分析
时常在cpp的代码之中看到这样的代码:#ifdef __cplusplusextern “C” {#endif//一段代码#ifdef __cplusplus}#endif 这样的代码到底是什么意思呢?首先,__cplusplus是cpp中的自定义宏,那么定义了这个宏的话表示这是一段cpp的代码,也就是说,上面的代码的含义是:如果这是一段cpp的代码,那么加入extern “C”...原创 2019-03-26 10:18:24 · 566 阅读 · 0 评论 -
在VS2013中编译高版本平台的工程时会出现无法解析的外部符号 snprintf或者无法找到该标识符的解决办法
最近项目上会用到Windows版的yolo检测算法,但是在编译过程中,所有的代码层面上的错误均解决后以为可以愉快的训练了,但是事与愿违,出现了一个意想不到的错误:该错误为snprintf函数的错误,无法加载其对应的静态库。snprintf() 函数的式跟printf一样, 是正在c内里用的函数,包括正在 #include stdio.h头文件中。 但snprintf()函数并非规范c/c中规则...原创 2019-03-22 11:00:41 · 1984 阅读 · 0 评论 -
c++编译时出现 #error: The C++ Standard Library forbids macroizing keywords
错误 C1189 #error: The C++ Standard Library forbids macroizing keywords. Enable warning C4005 to find the forbidden macro. 解决方案:在项目->属性-&...原创 2019-03-22 10:22:40 · 10080 阅读 · 5 评论 -
详解YUV数据格式
YUV格式有两大类:planar和packed。对于planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V。对于packed的YUV格式,每个像素点的Y,U,V是连续交*存储的。 YUV,分为三个分量,...转载 2019-06-05 17:46:38 · 2144 阅读 · 0 评论 -
C++ 什么是句柄?为什么会有句柄?HANDLE
出处:http://www.cppblog.com/mymsdn/archive/2009/02/19/handle-in-windows.html从广义上,能够从一个数值拎起一大堆数据的东西都可以叫做句柄。句柄的英文是"Handle",本义就是"柄",只是在计算机科学中,被特别地...转载 2019-06-04 09:59:48 · 7781 阅读 · 0 评论 -
c++通过网络编程发送结构体连接
https://blog.csdn.net/qq_25544855/article/details/80043019https://blog.csdn.net/ikerpeng/article/details/38387171原创 2019-07-03 11:39:54 · 1748 阅读 · 0 评论 -
C++解析JSON进行网络传输--一个通过JSON方式的socket传输
1、客户端:2.服务端转载 2019-07-03 16:36:21 · 3265 阅读 · 0 评论 -
C++实现Socket传输json封装的Mat
一般进行图片传输时,先用openCV把图片转换为Mat,然后封装到json当中,然后再从json中解析出来。这次是客户端向服务端传输。Ps:客户端第一次发送一张图片,第二次发送两张图片,后面依次循环,转成Mat封装到json中,服务端接收并解析,如果是一张图片生成名称和相似度,如果是两张只生成相似度,封装到json,并返回至客户端(用于人脸识别的,读者可以根据自己的需要改动)客户端:图片转换为...转载 2019-07-03 17:36:11 · 1450 阅读 · 1 评论 -
C++ 获取当前时间毫秒数(兼容windows和linux)
本博客转自:https://blog.csdn.net/sunxianliang1/article/details/52150365#ifdef _WIN32 #include <winsock2.h> #include <time.h>#else #include <sys/time.h>#endifunsigned long long Get...转载 2019-07-04 18:07:32 · 2704 阅读 · 0 评论 -
C++ string的万能转换,从long string 之间的转换来看看
本博客转自:https://blog.csdn.net/vic___/article/details/9324897string 转 long那必须是万年atoi(),不过得配合c_str()使用!#include <string>#include <iostream>#include <stdlib.h>using namespace std;i...转载 2019-07-04 18:12:55 · 15130 阅读 · 3 评论 -
Windows下c++多线程编程
https://blog.csdn.net/chenzba/article/details/45721735https://blog.csdn.net/chenzba/article/details/45565071原创 2019-07-11 14:58:23 · 216 阅读 · 0 评论 -
C/C++内存管理(2)
1. 什么是虚拟内存?因为目前程序都运行在支持多道程序的系统上,让每个程序都直接使用物理地址是相当危险和不稳定的。很容易引发访存冲突,甚至造成系统崩溃。所以在现代计算机系统中,程序都使用虚拟内存来取代直接使用物理内存。虚拟内存对于每个进程来说是自己独占的,通常为4G, 进程可以独立支配这4G虚拟内存。而不用理会当前系统...转载 2018-05-29 14:08:17 · 175 阅读 · 0 评论 -
c/c++内存管理(1)
欢迎进入内存这片雷区。伟大的Bill Gates 曾经失言:640K ought to be enough for everybody — Bill Gates 1981程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本章的内容比一般教科书的要深入得...转载 2018-05-21 15:41:07 · 171 阅读 · 0 评论 -
#ifndef #ifdef
一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif它的作用是:当标识符已经被定义过(一般是用#define命令定义)转载 2017-07-20 14:39:41 · 1877 阅读 · 0 评论 -
如何定义类总结
1、为了避免在各个文件中重复定义头文件,应该用#ifndef 标识符>来定义头文件。标识符一般为 头文件名字大写且.h那个点也应该为下划线例如 #ifndef _VDAL_DETECT_H #define _VDAL_DETECT_H2.有一些宏定义3.定义类的时候 公共成员常常包含 构造函数析构函数 初始化函数等公共接口4.在头文件中,应包含类的定义、原创 2017-07-21 14:31:42 · 747 阅读 · 0 评论 -
extern C
extern “C”的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern “C”后,会指示编译器这部分代码按c语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。 这个功能十分有用处,转载 2017-07-21 16:56:51 · 331 阅读 · 0 评论 -
__declspec(dllimport)
是时候总结一下__declspec(dllimport)的作用了。可能有人会问:__declspec(dllimport)和__declspec(dllexport)是一对的,在动态链接库中__declspec(dllexport)管导出,__declspec(dllimport)管导出,就像一个国家一样,有出口也有进口,有什么难理解的呢?这是一种很自然的思路,开始我也是这样理解。但是在两年前的一转载 2017-07-21 17:24:46 · 2115 阅读 · 0 评论 -
内存泄漏相关问题
1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存;二是在类的构造函数中动态的分配了内存,但是在析构函数中没有释放内存或者没有正确的释放内存2. 没有正确地清除嵌套的对象指针3. 在释放对象数组时在delete中没有使用方括号方括号是告诉编译器这个指针指向的是一个对象数组,同时也告诉编转载 2017-07-22 16:38:48 · 315 阅读 · 0 评论 -
windows任务管理器中的工作设置内存,内存专用工作集,提交大小详解
通俗的讲工作设置内存是程序占用的物理内存(包含与其他程序共享的一部分), 内存专用工作集是程序独占的物理内存, 提交大小是程序独占的内存(包含物理内存和在页面文件中的内存).注:页面文件就是存放不在物理内存中的内存,文件路径一般在C:\pagefile.sys,目的是为了能够让更多的进程运行,即使合起来所占用的内存已经超过物理内存. 只要将其中一部分内存转入页面文件, 物理内存就可以空出来转载 2017-07-24 09:22:51 · 13766 阅读 · 0 评论 -
c++vector用法详解
vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 用法: 1.文件包含: 首先在程序开头处加上#include<vector>以包含所需要的类文件vector 还有一定要加上using name转载 2017-07-19 21:53:00 · 524 阅读 · 0 评论 -
堆栈解释
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似转载 2017-07-25 09:29:08 · 595 阅读 · 0 评论 -
main函数的参数
我们经常用的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。转载 2017-07-26 17:21:19 · 944 阅读 · 0 评论 -
C++程序无法加断点解决方法
以VS2013为例:第一种方法(也是首先要检查的)1、在vs界面上 点击 工具->选项->调试->常规2、看显示的选项中的“要求源文件与原始版本完全匹配选项” 是否勾选,如果勾选的话将其取消勾选。取消勾选后看其是否可以添加断点第二种方法单击项目属性->C/C++->优化-> 在优化那一栏 将其禁用原创 2017-07-27 20:44:06 · 5052 阅读 · 2 评论 -
vs相关
工程目录下各文件的含义一般大部分的文章可能介绍到上面就算结束了,但我这还没有。创建工程产生的各个文件都你知道是什么用的吗?如果你是一个初学者,你可能会不知道(老手请跳过本文)。Ok,我就带你逐一了解吧。解决方案与工程在这之前先了解一个概念:解决方案与工程。 解决方案(Solution):一个大型项目的整体的工作环境; 工程 (Project):一个解决方案下的一个子工程;在VS中,一个Solut转载 2017-07-27 21:16:52 · 187 阅读 · 0 评论 -
指针与二级指针
为了把引用 解引用 取地址 指针 双指针 指针的引用 二级指针 这一块弄清楚,钻研与查阅资料得到如下体会;1. 引用与取地址 (reference and address) 引用的&前面一定有类型符号,否则就不是引用, 取地址的&后面一定有变量名称,一旦出现&,一定把此搞明白 int b =10, int &a, 这明显就是引用,&b 这就是取地址, test1(int &a转载 2017-08-28 20:33:23 · 312 阅读 · 0 评论 -
_finddata_t
到底如何查找文件呢?我们需要一个结构体和几个大家可能不太熟悉的函数。这些函数和结构体在的头文件中,结构体为struct _finddata_t,函数为_findfirst、_findnext和_fineclose。具体如何使用,我会慢慢讲来~ 首先讲这个结构体吧~ struct _finddata_t ,这个结构体是用来存储文件各种信息的。说实话,这个结构体的具体定义代码,我没有找到,转载 2017-10-20 11:11:35 · 2511 阅读 · 0 评论 -
win10 下_findnext()异常问题000005异常解决
在win10中,使用文件遍历函数_findnext会报0xC0000005错误 原因: _findnext()第一个参数”路径句柄”,返回的类型为intptr_t(long long),如果定义为long,在win7中是没有问题,但是在win10中就要改为long long或者intpt...转载 2018-03-19 14:07:16 · 1390 阅读 · 0 评论 -
vs快捷键
VS2015中的快捷键1.回到上一个光标位置/前进到下一个光标位置1)回到上一个光标位置:使用组合键“Ctrl + -”;2)前进到下一个光标位置:“Ctrl + Shift + - ”。2.复制/剪切/删除整行代码1)如果你想复制一整行代码,只需将光标移至该行,再使用组合键“Ctrl+C”来完...转载 2018-05-18 08:52:28 · 179 阅读 · 0 评论 -
【C++】多个类的 DLL 封装及调用
【C++】多个类的 DLL 封装及调用网上大多是将函数封装成 dll 的教程,类的封装也是基本相似的。创建 DLL在 VS2010 中新建一个 win32->dll 工程。如我建立的工程名为 FaceDLL添加 facedll.h 的头文件(里面定义 dll 的接口,调用时会用到)[cpp] view pla...转载 2018-05-21 14:55:09 · 2072 阅读 · 0 评论 -
任务管理器测试内存泄露
用任务管理器测试内存泄露的方法很简单。任务管理器和内存泄露紧密相关的只有两项,一个是内存使用率,一个是当前句柄数。方法分别如下:1,内存泄露的方法:打开任务管理器,此时要减少电脑或虚拟机上其它类型的活动程序,尽量保证查看到的参数和当前运行的程序有较大的相关性。记录此时的内存使用率。在没有其它程序的情况下,应...转载 2018-05-21 15:31:10 · 1451 阅读 · 0 评论 -
#pragam comment
转自:http://www.cnitblog.com/ictfly/archive/2011/06/27/74454.html 编程经常碰到,理解的总不是很透彻,在这里查阅资料总结一下! 在编写程序的时候,我们常用到#pragma指令来设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma once :这是一个比较常用的指令,只要在头文件的最开始加入这条指令就能够保证头文件被转载 2017-07-20 14:28:01 · 742 阅读 · 0 评论