- 博客(23)
- 收藏
- 关注
原创 csv-parser在C++17下from_chars函数问题
哎!c++碎片化,真是麻烦!我win下vs2017的C++17没问题.linux下 g++ (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0有问题.即使c++17这就牵扯到各家编译时实现的不同.
2025-02-07 19:51:46
397
原创 Paho MQTT 错误代码-8 MQTTCLIENT_BAD_STRUCTURE
初始化一下就行. MQTTClient_message pubmsg = MQTTClient_message_initializer;有些不会这样,比如MQTTClient_message,所以我没有直接用它的宏.你可以后来单独赋值成员变量.只要不忘了个别变量就行, 忘了就报错-8.MQTTClient_message 这个结构体定义的变量.没有被"完全"初始化.调用MQTTClient_publishMessage() 返回-8.他的文章并没有解决我的问题.但是可以参考.
2024-12-25 13:20:50
352
原创 const和constexpr进一步思考
首先如果你对constexpr不了解,还是不太合适.这篇文章主要还写我自己在用constexpr遇到的一些疑问.
2024-05-29 19:20:08
1092
原创 正确可用--Notepad++批量转换文件编码为UTF8
Notepad++批量转换文件编码为UTF8_怎么批量把ansi转成utf8-优快云博客。他的操作步骤没问题,就是把脚本代码换成我这个.我参考了它的教程,但是py脚本写的不对.只能改一个.不能实现批量更改.
2024-05-23 17:19:24
1973
原创 toml11读,写,格式转换
如果你无法确定类型或者默认值是无法确定的,可以使用其他处理方式,比如手动检查键是否存在 ,然后根据情况再使用 toml::find 或 toml::find_or。toml::get_or 函数用于从 toml::value 对象中获取指定键的值。我当时写的时候也是非常费劲,我这边是双层map遍历,牵扯到读,写,修改,以及判断某些配置项是否存在,并且和map同步确实有点复杂。需要注意的是,使用 toml::get_or 的前提是你能够确定配置项的类型,并且在键不存在时能够提供一个合适的默认值。
2024-05-09 16:45:04
969
3
原创 在vs2017中,因为编码所带来的 C1071 、C4819问题。
C1071 在注释中遇到意外的文件结束 的解决办法C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。或者是本来好好的代码,从linux移动到win,就出现这个问题。首先vs2017中,我很清楚的记得无论是UTF8还是UTF8with'BOOM都是可以通过编译的,但是今天我从linux拉下一个代码后,却出现不能编译的问题。
2024-04-10 23:35:17
702
原创 libmodbus报文打印、记录;适配多个版本
不同版本的libmodbus中,读写报文有着不同的区别,但是我都做了适配。函数命名规则就是在原先的函数的名字加上_msgs。//这是库本身读取功能码3的函数/*这是新增函数,用来接收报文;参数:sbuf:下发报文slen:下发报文长度rbuf:上送报文rlen:上送报文长度(当接收报文失败,长度为0)返回值:保持和libmodbus一致*/标题中写到“适配多个版本”,而不同的版本在不同分支中。
2024-01-12 16:05:25
907
5
原创 Qt::UniqueConnection和lambda一块用无效
那么用了Qt::UniqueConnection也会出现槽函数被多次调用的问题。如果槽函数是lambda。
2023-12-07 11:29:21
919
原创 protobufLNK2019 无法解析的外部符号 “__declspec(dllimport) public: void __thiscall google::protobuf::io::Coded
假设用3.10.0的protoc生成的.cc .h文件,到3.13.0的库中去使用,肯定链接失败!protoc.exe的版本和你的程序依赖的protobuf版本是否同一个。已经用了预编译宏——PROTOBUF_USE_DLLS,还是不能解决。只是同一个版本,就能解决!
2023-12-05 10:12:31
622
原创 Libcurl中SFTP和FTP删除,重命名,新建文件夹操作
网上关于libcurl的ftp和sftp的使用,已经非常全面了。在我开发的工程中,发现对于libcurl中一些命令的使用网上的文章比较少。所以这也是我写这篇文章的原因。
2022-08-10 16:10:22
4154
原创 vcpkg的CMake failure output和English language解决办法
vcpkg的CMake failure output和English language问题vcpkg was unable to detect the active compiler's information. See above for the CMake failure outputWarning: The following VS instances are excluded because the English language pack is unavailable.
2022-01-21 12:00:02
1726
原创 Visual Studio 2017 运行、调试使用CMake构建的多可执行程序项目
在 Windows 环境下,笔者主要通过 Visual Studio 进行较大型项目的查看和运行调试。这里记录下使用 Visual Studio 编译、运行和调试可能包含有多个可执行程序的多文件项目的方法,特别的,这里记录的是使用 CMake 进行自动化构建的多文件项目。 使用 Visual Studio 打开项目 目前许多大文件项目使用跨平台自动化构建系统 CMake 进行项目内部依赖关系的管理。简单而言,CMake 使用统一规则的配置文件CMakeLists.txt 记录...
2021-05-26 18:02:22
3436
原创 字符串“16进制”,转成真正的“16进制
目录十六进制文本 与 十六进制数据 转换十六进制字符串十六进制文本十六进制数据格式化使用方法结果演示函数代码十六进制文本 与 十六进制数据 转换十六进制字符串十六进制文本十六进制数据格式化纯C编写,支持空格与逗号分隔符 ,支持大小写 ,无视0x前缀,无视多个分隔符;甚至"0xaa,,,,,,, f f0,0f 0xb acddfe 0xGFff\0"也可以识别,代码逻辑可能存在漏洞,还需要各位自己仔细甄别。代码给出来是给大家参考学习的,代码写的不...
2021-03-30 09:42:47
3036
2
转载 vbox虚拟机vdi文件用VMware打开
方法一:使用VirtualBox自带的VBoxManage来进行格式转换:1、安装VBoxManage2、使用VBoxManage格式转换指令转为Vmware能识别的(vmdk)格式方法二:vdi转成VM虚拟机文件vmdk文件并生成vm虚拟机配置文件1、vbox导出ova虚拟机文件2、用VM虚拟机打开ova文件方法三:我们将使用qemu-img工具。QEMU磁盘镜像工具(这个要在能开机的情况下开始,安装qemu-kvm可能导致virtualbox无法启动)1、..
2021-03-08 14:24:24
6237
原创 boost库的安装(win+vs2017)
1、boost库--下载和安装(win+vs2017)1.1、哪里可以获取boost的源码和库文件?1.2、安装过程1.2.1、先执行 .bat文件1.2.2、然后执行 b2.exe文件(时间较长,耐心等待)1.3.1、操作vs中的“包含目录”,“库目录”1.3.2、包含目录1.3.3、库目录1.4、1、boost库--下载和安装(win+vs2017)1.1、哪里可以获取boost的源码和库文件?boost官网https://www.boos...
2021-02-23 17:53:27
540
转载 linux终端假死问题,解决办法
有时在linux下shell终端中,会突然出现终端应用卡死,无法接受键盘输入, 但是其它分屏, 系统都是正常的。这本来是一个终端的很老的功能, 叫软件流控制(XON/XOFF flow control),具体就是当client(terminal emulator), 也就是常用的终端模拟器无法接受更多的数据的时, 终端会发送一个 “XOFF” 信号 告诉发送数据端暂停发送, 直到收到"XON"信号,其中发送的 “XOFF” 是告诉内核的 tty 驱动将正在发送数据的进程设置为休眠状态, 直到 tty 驱动发
2020-07-17 10:28:28
9702
3
原创 代码区,常量区,静态区,堆区,栈区的区别
代码区:存放程序的代码,即CPU执行的机器指令,并且是只读的。常量区:存放常量(程序在运行的期间不能够被改变的量,例如: 10,字符串常量”abcde”, 数组的名字等)静态区(全局区):静态变量和全局变量的存储区域是一起的,一旦静态区的内存被分配, 静态区的内存直到程序全部结束之后才会被释放堆区:由程序员调用malloc()函数来主动申请的,需使用free()函数来释放内存,若申请了堆区内...
2020-03-18 23:04:14
279
原创 关于C++中,类的成员中不能有宏定义。
关于第二个 c++ 特有的问题:预处理:头文件包含、宏替换、条件编译、删除注释 不做语法检查因为预处理,是要进行宏替换,但是c++在预编译阶段是不能够访问类的成员,所以在c++中没法进行宏替换。所以在c++中,类的成员中,不能有宏定义。...
2020-03-17 23:57:10
1282
1
原创 类型的转换
1、自动类型转换(从小的类型转换到大的类型)、void test02(){ int data1 = -20; unsigned int data2 = 10; //有符号data1和无符号data2参加计算的时候 //会先将data1转换成无符号(-20的补码很大的正数) //很大的数 + 10 必然 >0 if(data1+data2 > 0) { prin...
2020-03-17 23:33:42
137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人