c++
paokuflying
c/c 程序员
展开
-
普通文本转C/C++源文件支持的格式
源文件里面写文本,需要手动一行一行给它加\r\n\,挺不爽。所以现在想开发一个小工具解决这个问题,直接将文本转为源文件里需要的形式。想起来容易,做起来起始没那么容易,学到了挺多。源文件,可以自己拿去编译。windows环境,系统编码设置为utf8,仅支持utf8,否则一定会有问题。原创 2023-08-15 11:06:02 · 218 阅读 · 0 评论 -
windows风格目录转linux风格目录
在使用msys2的时候,需要使用linux风格目录,而从windows复制过来的目录字符串,需要一个一个去改正反斜杠,还要给带空格的加上单引号,挺麻烦,于是开发了这个工具直接转。编译的时候,取消sdl检查就行。原创 2023-08-11 09:55:39 · 135 阅读 · 0 评论 -
windows修复文件名乱码
从linux机器传中文文件名的文件到windows,会导致文件名乱码,这时因为linux编码是utf8,windows是gbk。找了一下好像没有类似linux的iconv,convmv的工具。于是自己手写了一个。已经开发成功并经过自测。取名叫utf8togbk.exe。主要功能是两个,一个是修复单个文件的乱码文件名,另一个是指定目录,递归修复包括此目录名在内和此目录里的所有乱码中文名。贴代码,使用的vs2022,需要取消sdl检查,和至少支持c++17,因为用到了std::filesystem。原创 2023-08-08 12:50:48 · 356 阅读 · 0 评论 -
delete基类指针能不能释放子类对象
#include <stdio.h>class A{public: A() { printf("A\n"); } ~A() { printf("~A\n"); }};class B : public A{public: B() { printf("B\n"); } ~B() { printf("~B\n"); }};int main(){ A *p = new B; delete p; return 0;}执行结果:AB~A基类析构函.原创 2021-03-02 10:39:20 · 1465 阅读 · 2 评论 -
研究va_list
测试代码#include <stdarg.h>#include <stdio.h>void s(const char* str1, const char* str2, ...){ va_list va_list_; va_start(va_list_, str1); const char* p1 = va_arg(va_list_, const char*); printf("p1 : [%p] [%s]\n", p1, p1); c...原创 2020-08-21 12:08:26 · 128 阅读 · 0 评论 -
研究C++类的成员变量构造析构顺序
#include <stdio.h>class A{public: A() { printf("a\n"); } ~A() { printf("~a\n"); }};class B{public: B() { printf("b\n"); } ~B() { printf("~b\n"); }};class C{public: C() { printf("c\n"); } ~C() { printf("~c\n".原创 2020-07-08 14:53:09 · 4275 阅读 · 0 评论 -
零基础尝试使用cmake
本文适合新手,从未使用过cmake的人。本文介绍自己对cmake的理解。同时也介绍自己在linux下成功使用cmake编译好自己的项目,及踩过的坑。cmake是一个跨平台的工具,起初耳闻cmake,是为了解决当项目变大源文件变多时,在linux写Makefile工作量太大,所以使用cmake来自动生成Makefile,以减轻工作量。在linux上确实是如此...原创 2020-05-17 10:32:59 · 1007 阅读 · 0 评论 -
boost::asio异步收消息
需求背景说明,boost::asio网络编程库,在进行同步收发消息的时候,本身是不支持超时的。如果自己想尝试去实现,给同步收消息增加一个超时,会有一系列弊端,比如额外的工作量,简单的代码变得不好看,程序可能变得不稳定。同时,在高并发情况下,就更是需要使用异步收消息来提升性能,开更少的线程去做更多的事。本人能力有限,本文只介绍boost::asio异步收消息的基本使用。要想实现异步操作,就...原创 2020-04-27 18:03:42 · 955 阅读 · 0 评论