
c++
@故人叹
这个作者很懒,什么都没留下…
展开
-
分享一个std::string字节转换时的问题
std::string 在大多数实现中是使用 char 类型来存储字符的,而 char 在很多系统中是有符号的(signed)。将 unsigned char 数组的内容赋值给 std::string 时,如果 std::string 内部使用的是有符号的 char 类型,那么任何大于 127 的值都会变成负数。这是因为有符号 char 的最高位是符号位。在这个例子中,buff[2] 和 buff[3] 可能被解释为有符号的 char 类型,因此它们的值可能被错误地解释为负数。遇到了两种不同的输出结果。原创 2024-12-13 10:52:07 · 244 阅读 · 0 评论 -
检测POSIX 线程是否运行结束
当信号参数为 0 时,该函数不会发送任何信号,而是用于检查线程的存在性。实现一个类似std::thread::joinable()函数,用于查看linux c/c++为 POSIX 线程线程是否运行结束,不能阻塞主进程。通常情况下,pthread_kill() 用于向线程发送取消信号 SIGCANCEL 或自定义的线程间通信信号。pthread_kill() 是 POSIX 线程库中的一个函数,用于向指定线程发送信号 sig。如果 sig 为 0,则不发送信号,但会检查线程是否存在。原创 2024-07-12 17:05:26 · 260 阅读 · 0 评论 -
sm4加密算法C/C++源码
* @brief 加密文件*/void Encrypt(std::string SrcPath);* @brief 解密文件*/void Decrypt(std::string SrcPath);* @brief 加密字符串 * @param SrcPath (传入) 需要加密的字符串 * @param DestPath (传出) 加密后的密文字符串 **********************************************************************原创 2022-09-27 00:02:28 · 6770 阅读 · 4 评论 -
使用libusb库实时监测usb设备插拔信息
使用libusb库实时监测usb设备插拔信息,信息包括USB插拔状态、USB接口号、设备名称iProduct、厂商名称iManufacturer、设备编号idProduct、厂商编号idVendor、接口编号、USB类型码bDeviceClass,与lsusb -v所获取的信息一致,接口号与lsusb -t显示信息一致,厂商名称id为0时,名称获取不到,用厂商编号填充。原创 2023-07-12 16:30:52 · 1413 阅读 · 1 评论 -
std::string类以值传递传入函数参数,源字符串被修改的情况
很明显,原字符串已经被修改,std::string::c_str() 返回一个 const char* 类型的指针,指向 std::string 内部存储的字符数组副本。分享一个std::string使用当中遇到的问题,众所周知,当std::string对象以值传递的方式传入函数参数时,会走拷贝构造函数,即生成一个副本传入函数,原始字符串的内容不会被修改。所以说,为了防止出现意外情况,修改 std::string 对象的内容最好使用 std::string 的成员函数来进行。原创 2023-07-12 16:12:55 · 551 阅读 · 1 评论