- 博客(65)
- 资源 (1)
- 收藏
- 关注
原创 protobuf复杂场景下的使用,包含多层嵌套结构体,repeated等(六)
protobuf复杂场景使用,包含多层结构体嵌套,repeated等成员参数情况。
2024-02-05 11:49:12 537
原创 protobuf程序运行报错error while loading shared libraries: libprotobuf.so.8: (三)
因此需要创建ld指向文件 /etc/ld.so.conf.d/libprotobuf.conf ,内容如下:(然后,需要执行:sudo ldconfig 命令)通过find查找 libprotobuf.so.8 文件,发现在/usr/local/lib下。确认,是否配置了LD路径,写到/etc/profile中,还需要执行source。找不到libprotobuf.so.8库文件,这一般是库文件路径没有添加正确。写了一个测试程序运行是,显示找不到库文件。注:需要root权限进行操作。
2024-02-05 10:52:35 277
原创 protobuf之实例使用(四)
protobuf安装后,在含有protoc执行文件的路径下,执行protoc程序,可以将.proto文件转换为.h和.cc文件。
2024-02-01 12:00:24 207
原创 protobuf简介(一)
Protobuf是Protocol Buffers的简称,它是Google公司开发的一种数据描述语言,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。protobuf是类似与json、xml一样的数据描述语言(数据格式)protobuf非常适合于RPC数据交换格式。
2024-01-30 11:10:15 220
原创 cannot open shared object file: No such file or directory
在一台Linux上编译库文件和执行文件后,放到另一台Linux机器上,执行报错,显示: cannot open shared object file: No such file or directory。首先确认执行文件(test)放在对应的环境变量bin和库文件(libtest.so)放在了对应的环境变量lib下。假设环境变量$(HOME)为 /root ,则执行文件(test)放在 /root/bin/目录下,库文件(libtest.so)放在 /root/lib/目录下。
2023-03-31 22:39:07 4549 1
原创 Qt之make: Nothing to be done for ‘first‘
Qt之make: Nothing to be done for ‘first‘的三种方法。
2023-01-17 17:00:47 1613
原创 C语言strstr()函数用法-字符串查找
strstr()函数是一个参数为两个字符指针类型,返回值是char*类型的函数。用于找到子串(str2)在一个字符串(str1)中第一次出现的位置(不包括str2的串结束符),并返回该位置的指针,如果找不到,返回空指针(NULL)。这里因为传进来的地址指向的内容不会在发生改变,所以我们在两个形参(char*)前加上const。它包含在string.h头文件中。
2023-01-04 18:47:50 19919
原创 memcpy与memmove函数的区别和实现
memcpy与memmove都是C语言的库函数,在头文件string.h中,作用是内存拷贝。唯一的区别是,当内存发生局部重叠时,memmove保证了拷贝的结果是正确的,但是memcopy不一定是正确的。但是memcpy比memmove速度快。destination即目标空间,即要复制到哪个空间source即源空间,即要被复制的内存空间num即要复制多少个字节的内容到destinationvoid*即返回目标空间。
2023-01-02 18:14:55 1259
原创 C++ string详解,C++字符串详解
string是C++标准库的一个重要的部分,主要用于字符串处理。可以使用输入输出流方式直接进行string操作,也可以通过文件等手段进行string操作。同时,C++的算法库对string类也有着很好的支持,并且string类还和c语言的字符串之间有着良好的接口。使用 string 类需要包含头文件2.定义 string 变量string s1;//获取字符串长度return 0;}变量 s1 只是定义但没有初始化,编译器会将默认值赋给 s1,默认值是"",也即空字符串。
2023-01-02 12:41:10 2960
原创 C语言中printf的内容带有多个引号
{"HOST": "fes1", "TIME": "2022-10-12 15:50:01", "ALARM": "file故障"}输出这个内容时需要用到转义字符'\" ',增加了转义字符后,双引号就能正常输出了。\t 水平制表符。\" 插入双引号。\' 插入单引号。\\ 插入反斜杠。\v 垂直制表符。
2022-10-12 16:38:26 2878
原创 QtCreator 部分快捷键
编辑的时候前几个使用的频率特别高;调试的时候后几个使用的频率高,且调试的快捷键和VS类似。F1 查看帮助F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2 声明和定义之间切换F4 头文件和源文件之间切换Ctrl+I 自动对齐Ctrl+/ 注释行,取消注释行Ctrl+F 查找替换当前选中的内容,按下Ctrl+F,会列出所有和你选的内容一样的语句Ctrl+1 ...
2022-03-20 10:35:02 313
原创 Linux修改系统日期和时间
1.进入root账户下。suroot 或 su root修改系统日期与时间date -s "2022-01-23 10:25:25"[root@localhost ~]# date2022年01月 22日 星期六 00:08:27 UTC[root@localhost ~]# date -s "2022-01-23 10:25:25"[root@localhost ~]# date2022年 01月 23日 星期日10:25:27 UTC最后输入 hwclock -.
2022-01-23 20:00:21 8436
原创 sizeof的使用与内存对齐
1.sizeof是一个单目运算符,不是一个函数。sizeof运算符是获取其操作数所占内存空间的字节数,sizeof的操作数可以是类型名,也可以是表达式。int a = 1; double b = 1.5; sizeof(int);//结果为4 sizeof(a);//结果为4 sizeof(a+b);//结果为8获取double 类型数组darray的元素个数:int count = sizeof(darray) /sizeof(double);计算字符串长度应该使用strlen函数
2022-01-01 22:05:20 885
原创 Linux常用命令
一.基本命令1.1 关机和重启关机shutdown -h now 立刻关机shutdown -h 5 5分钟后关机poweroff 立刻关机重启shutdown -r now 立刻重启shutdown -r 5 5分钟后重启reboot 立刻重启二、目录操作命令2.1 目录切换 cd命令:cd 目录cd / 切换到根目录cd /usr 切换到根目录下的usr目录cd ../ 切换到上一级目录 或者 cd ..cd ~ 切换到home目录cd
2021-12-30 16:40:41 135
原创 tableWidget内容中的元素居中
将单个单元格的内容设置为居中ui.tableWidget->item(i,j)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);将部分行和列的单元格内容设置居中 for (int i=0;i<5;i++) { for (int j=0;j<8;j++) { ui->tableWidget->item(i,j)-&
2020-08-05 15:51:43 7397
原创 QDateEdit日历修改之QCalendarWidget 样式设置
1. QDateEdit控件显示日历,需要用下面的setCalendarPopup(true);ui.dateEdit->setCalendarPopup(true);2. 日历样式的修改需要用到QCalendarWidget控件。其样式的调整可以在QSS中调整。下面就图中的标记进行说明:1)左右两边的箭头,是用代码实现的。QToolButton*prevBtn...
2019-08-08 19:38:19 8932 8
原创 信号与槽函数
信号与槽机制(signal&slot)作为Qt最重要的特性,提供了任意两个Qt对象之间的通信机制。信号会在某个特定情况或动作下触发,槽是用于接收并处理信号的函数。信号和槽有如下三个连接方式:1.一个信号可以与另一个信号相连。也就是一个信号触发另一个信号发射。2.同一个信号可以与不同的多个槽函数相连。3.同一个槽函数也可以响应多个不同的信号。...
2018-06-26 16:40:42 2533
原创 指针和引用的区别
1.指针是变量的地址,引用是变量的别名。指针本身也是一个变量,指针的值是另一个变量的内存地址,指针指向这个变量,指针和指针指向的变量是两个不同的变量。引用是给变量起了一个别名,可以认为引用于原变量是同一个变量,只是这个变量有两个不同的名字。(1)sizeof运算符的意义不同,指针进行sizeof得到的是指针本身占用的空间,返回结果为4个字节;而引用进行sizeof得到的是原变量占用的空间,返回结果...
2018-06-13 14:17:22 305
原创 函数重载和函数覆盖的区别
1.函数重载是同一个类中的不同方法,函数覆盖是不同类中的同一方法;2.函数重载的参数列表不同,函数覆盖的参数列表相同;3.重载函数调用时根据参数类型选择方法,覆盖函数调用时根据对象类型选择方法。...
2018-05-26 10:31:15 724
原创 重载函数、覆盖函数的名字隐藏问题
所谓名字隐藏是指父类中有一组重载函数,子类在继承父类时如果覆盖了这组重载函数中的任意一个,则其余没有被覆盖的同名函数在子类中是不可见的。class Base{public: virtual void printf(int a){cout<<"Base print int"<<a<<endl;} virtual void printf(char a){c...
2018-05-26 08:48:49 64
原创 栈空间和堆空间的区别
在程序中,数据存储在不同的区段,通常将整个数据区分为四部分:栈存储区,堆存储区,全局及静态存储区,常量存储区。1.栈空间主要存储函数参数和局部变量。存储数据是先进后出,由编译器负责分配和释放回收。2.堆存储区主要存储动态分配的内存块,编译器不会自动处理,需要程序员负责分配和回收。有可能产生内存泄漏,在不断分配和释放空间的过程中,造成空间逐渐碎片化,每块可用空间都很小。3.全局及静态存储区主要存储全...
2018-05-23 16:52:12 1432
原创 main函数执行前后都发生了什么
1.main函数第一行代码执行之前会调用全局对象和静态对象的构造函数,初始化全局变量和静态变量。2.main函数最后一行代码执行之后会调用在atexit中注册的函数,并且调用顺序和注册顺序相反。...
2018-05-14 10:19:01 1690
原创 malloc/free与new/delete的区别
1.malloc/free是C语言提供的库函数,通过函数调用访问,需要传递参数并接收返回值;而new/delete是C++提供的运算符,有自己的一套语法规则和运算方式。2.malloc/free函数只能应用于基本类型,而new/delete不但可以应用于基本类型,还可以应用于面向对象中的自定义类型。3.malloc函数返回的是void* 类型,程序需要显示地转换成所需要的指针类型;new操作符后面...
2018-05-14 10:18:48 111
原创 C++寻找素数
C++寻找素数,下面代码是每行输出10个素数。计算100以内的素数。100也可以修改为任意数。int main(){ bool bflag = false; int inum = 0; for (int i = 2; i <= 10000; i++) { bflag = false; for (int j = 2; j < i; j++) { if (i%j...
2018-05-04 14:23:27 8241
原创 Qt界面关闭主窗口,若其Qdialog弹框没有关闭,程序无法退出
Qt界面关闭主窗口,若其Qdialog弹框没有关闭,程序无法退出需要在主窗口设置属性:Qt::WA_QuitOnClose将主窗口属性设置为:fm.setAttribute(Qt::WA_QuitOnClose,true);Qt::WA_QuitOnClose属性是使窗口如果是最后一个关闭的时候触发事件lastWindowClosed();然后主程序收到事件退出a.conne...
2018-03-14 16:46:45 5242 2
原创 QT加载jpg、jpeg、gif图片不可见问题解决
QT加载jpg图片、gif动图时,图片不可见问题是没有加载QT的图形库解决办法:1. 在Qt文件夹里有个plugins文件夹内,imageformats是图片的库,里面有jpg,gif等。2. 将qt文件夹中plugins文件夹拷贝到指定文件夹下:如E:\SVN\plugins3. 在程序主函数中指定该路径: int main(int argc, char *argv[]){
2017-09-18 14:08:01 4679
原创 qtabwidget表内容设置
1.qtabwidget表格整行选择设置:ui.tableView_grid->setSelectionBehavior(QAbstractItemView::SelectRows);2. qtabwidget表格设置只能选中一行:ui.tableView_grid->setSelectionMode(QAbstractItemView::SingleSelection);3. qtabw
2017-08-31 19:31:37 3789
原创 qtablewidget控件滚动条设置
qtablewidget控件的滚动条分为纵向滚动条设置和横向滚动条设置.纵向滚动条设置:ui.tableWidget_grid->verticalScrollBar()->setStyleSheet("QScrollBar{background-color:rgb(218,222,223); width:10px;}" "QScrollBar::handle{background-color:
2017-08-31 19:05:11 15612 5
原创 qtabwidget表头字体大小、字体颜色、背景颜色设置
如下是对tabwidget表头的设置。background-color是对表头背景颜色的设置。font是对字体大小,字体颜色,字体格式设置。ui.tableWidget_grid->horizontalHeader()->setStyleSheet("QHeaderView::section{background-color:rgb(40,143,218);font:13pt '宋体';col
2017-08-31 18:52:57 42823 8
原创 隐藏tabwidget 上的tab标签
隐藏tabwidget上的tab标签有如下两种方式。方式一是亲测可以实现的,方式二是在网上看的说可以实现。方式一:ui.tabWidget->findChildren().at(0)->hide(); 方式二:注方式二对qt的版本有要求,需要在5.0以上,在5.0以下的,tabBar()是受保护的,是protected的,不被外部调用。ui.tabWidget->tabBar(
2017-04-21 11:14:52 10268 1
原创 QTableView用法小结
QTableView常用于实现数据的表格显示。下面我们如何按步骤实现学生信息表格:一 添加表头 //准备数据模型 QStandardItemModel *student_model = new QStandardItemModel(); student_model->setHorizontalHeaderItem(0, new QStandardItem(QObj
2017-04-07 09:06:49 778
原创 C++中map的用法
Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识
2017-02-14 13:28:34 655
原创 C++排序之冒泡法
冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。冒泡排序算法的运作如下:(从后往前)比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,...
2017-02-07 13:58:41 11131 3
原创 C++排序之直接插入排序法
直接插入排序算法是将一个记录插入到已排序好的有序表中,从而得到一个新的,记录数增1的有序表。即:先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。要点:设立哨兵,作为临时存储和判断数组边界之用。如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,...
2017-02-07 09:09:41 4964 2
原创 C++排序之直接选择排序法
直接选择排序算法是一种简单直观的排序算法。它首先在未排序序列中找到最小(大)元素,存放到排序序列的其起始位置,然后再从剩余未排序的序列元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素排序完毕。代码实现如下:#include using namespace std;void print(int a[], int n ){ cout<<n <<":
2017-02-06 14:54:38 5619
世纪秒和日期时间转换工具
2024-01-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人