
c++
文章平均质量分 54
c++
磊磊cpp
Software Engineer specializing in Graphics . Main language is C++.
https://github.com/cfl997
展开
-
C++ CSV 中文 乱码 UTF-8 ANSI
要正确读取包含中文字符的CSV文件,需要确保文件是以UTF-8编码保存的,并且在读取文件时正确处理编码。使用并设置其字节流的编码方式可以解决乱码问题。原创 2024-05-28 17:42:27 · 818 阅读 · 0 评论 -
glCopyImageSubData 使用说明 并且 偏移操作之后 目标区域的其他区域颜色不对的问题
是 OpenGL 4.3 及以上版本提供的一种函数,用于在不同的纹理对象或纹理内部进行快速的数据拷贝操作。与传统的纹理数据传输方法相比,提供了一种高效且灵活的手段,可以在无需映射或解压纹理数据的情况下进行图像数据的复制。原创 2024-05-22 16:32:05 · 214 阅读 · 0 评论 -
Swig CMakeLists.txt 最简便配置
swig转换的cmake配置很乱 没有一个详细的解释。当将.i文件单独拎出来生成一个单独的dll非常的麻烦。于是采用最简便的方法。并且生成的dll不影响c++本身项目的使用。比如这个既可以给c#用也可以给c++用。原创 2024-05-21 13:38:02 · 410 阅读 · 0 评论 -
swig 转换c++ 到C#的问题
swig转换时遇到的问题,进行记录。原创 2024-05-17 13:21:28 · 357 阅读 · 0 评论 -
swig4.2.1压缩包中里面没有找到swig.exe
不要用迅雷....雷子有点...不靠谱。原创 2024-05-17 11:07:04 · 241 阅读 · 0 评论 -
ffmpeg7.0 + visual studio 2022 release lib 静态库编译使用
前一篇是在windows下采用 msys2 的编译。可以正常使用。但是在dlltool工具将.a转成.lib时并不能很好的使用。如果大家针对于.a的转换有什么好的方法,欢迎交流。原创 2024-05-16 09:26:12 · 1253 阅读 · 1 评论 -
将 void* 转换为 int*:使用 reinterpret_cast 将 void* 转换为 int*。 对转换后的指针进行赋值:一旦转换完成,就可以使用转换后的 int* 指针来进行赋值操作。
将void*转换为int*并进行赋值操作是一个常见的任务,特别是在处理需要泛型指针的低级编程场景中。下面是如何执行这个操作的详细步骤和示例代码。原创 2024-05-15 13:38:14 · 650 阅读 · 0 评论 -
ffmpeg 7.0 + vs2022 +windows编译
后面有总结:安装msys2打开 (这一步非常重要不然就得指定vs的环境)关闭ffprobe方式:下面有不关闭。运行在命令行中切换到msys2安装目录中打开运行 安装之后切换到ffmpeg源码目录下:下载源码:切换到目录下多线程编译:数字8、根据cpu内核自行决定在fftools/opt_common.c(206)注释掉在下有所有的库编译带不关闭ffprobe静态库添加debug调试信息:–extra-cflags=“-g”原创 2024-05-10 16:50:31 · 1518 阅读 · 0 评论 -
qt C# MFC 等界面接入glfw。用glfw管理事件 实现 OpenGL事件交互 的教程。glfw+qt会卡死的问题
GLFW是一个轻量级的库,用于处理窗口和输入设备的操作,是开发OpenGL应用程序的理想选择。无论是Qt、C#还是MFC,我们都可以利用GLFW来管理窗口和事件。通过GLFW,我们可以在不同的界面框架中实现OpenGL事件交互。无论是在Qt、C#还是MFC中,我们都可以使用GLFW来管理窗口和事件,从而实现OpenGL的交互操作。关键是理解每个界面框架的特性和API的使用方法,并将GLFW集成到相应的框架中。原创 2024-05-08 17:33:46 · 512 阅读 · 0 评论 -
全局测试用例环境和访问共享资源的GoogleTest教程
通过上述示例,我们学习了如何使用GoogleTest创建全局测试环境,并在测试用例中访问共享资源。这种方法可以帮助我们更好地组织和管理测试代码,提高测试的可重复性和可维护性。在实际项目中,可以根据具体需求扩展和优化这些概念,以满足项目的测试需求。原创 2024-05-08 15:27:45 · 504 阅读 · 0 评论 -
鼠标屏幕坐标转换到世界坐标纯c++代码实现
通过执行这些步骤,我们可以将场景中的物体从其模型坐标转换为屏幕上的像素坐标。这个过程涉及到模型变换、观察变换、投影变换和屏幕映射等操作,其中投影变换和屏幕映射是最关键的步骤,决定了最终在屏幕上可见的内容。原创 2024-04-18 13:57:10 · 426 阅读 · 0 评论 -
glm::vec3 等结构放入结构体中 内存对其问题
在OpenGL编程中,与顶点数据的交互是非常常见的操作。在C++中,通常会使用GLM库提供的数据结构,如glm::vec3,来表示顶点数据。然而,内存对齐问题可能会影响到这种交互,特别是在涉及到结构体的内存布局时。本教程将探讨在OpenGL中如何处理顶点数据,并对比在加入GLM宏定义和不加入GLM宏定义的情况下的内存大小差异,同时提供相应的Shader代码。当你在使用GLM库时,可能会遇到内存对齐的问题,特别是在与其他库或系统进行交互时。GLM提供了一个宏定义,它可以强制GLM库使用对齐内存分配。原创 2024-04-16 10:21:44 · 327 阅读 · 0 评论 -
LoadLibrary 返回为空
如果你的程序是 64 位的,但是尝试加载的 DLL 是 32 位的,或者反之,可能会导致加载失败。DLL 文件可能依赖于其他 DLL 文件,而这些文件可能不存在或者无法被找到。程序可能没有足够的权限来读取或加载该 DLL 文件。你需要检查程序运行时的权限,并确保有足够的权限来加载 DLL 文件。DLL 文件本身可能损坏了,导致无法加载。可以根据这些可能的原因逐一排查,以确定是什么导致了加载 DLL 文件失败的问题。确保 变量中包含的路径是正确的,不包含任何错误或多余的字符。原创 2024-04-16 10:03:35 · 982 阅读 · 0 评论 -
了解OpenGL的Program Pipeline:
在深入研究OpenGL Program Pipeline之前,我们首先要理解什么是Program Pipeline。Program Pipeline是OpenGL 4.1引入的一个特性,用于管理多个着色器程序(Shader Program)。着色器程序是OpenGL渲染管线的一部分,用于定义顶点处理、片段着色和其他图形处理过程。Program Pipeline的主要目的是将多个着色器程序组合在一起以实现高效的渲染。原创 2023-10-24 22:18:35 · 349 阅读 · 0 评论 -
cmake 多线程编译 指定 Visual Studio 编译器 命令行
这两个命令的组合使你能够配置和构建Visual Studio 2019项目,确保使用Debug配置和多线程构建,以便于开发和调试。通常,在开发和调试阶段,使用Debug构建,而在部署到生产环境之前,使用Release或其他相关类型进行最终构建。这些命令组合使你能够配置和构建一个Visual Studio 2019项目,确保使用了Debug配置和多线程构建。这个构建类型是一种混合类型,它包含了一些优化,但仍然包含调试信息。在CMake中,DCMAKE_BUILD_TYPE是用于指定项目的构建类型的选项。原创 2023-10-11 17:47:53 · 1703 阅读 · 0 评论 -
C++ 多线程编程教程:使用 std::thread 和 std::future 进行并发任务管理 ,处理线程超时
本教程介绍了如何使用C++中的和来启动和管理多个线程,以执行并发任务。我们学习了如何等待线程完成,以及如何处理线程超时情况。多线程编程可以帮助您充分利用现代多核处理器,提高应用程序性能,但同时也需要小心处理线程之间的同步和异常情况,以确保程序的稳定性和可维护性。希望这个教程对您有所帮助,能够让您更好地理解和使用C++中的多线程编程工具。原创 2023-09-06 17:31:59 · 1233 阅读 · 0 评论 -
在 Visual Studio 中编译 Qt 资源文件和 UI 文件教程
接下来,您需要配置自定义构建步骤,以便在构建项目时编译资源文件和 UI 文件。通过按照本教程的步骤,您可以在 Visual Studio 中配置并编译 Qt 资源文件和 UI 文件。这样,您就可以更轻松地管理和使用项目中的资源和界面元素。记住,根据您的项目结构和需求,可能需要对命令行和输出路径进行适当的调整。原创 2023-08-14 09:43:51 · 3272 阅读 · 0 评论 -
C++标准库教程:std::optional详解
C++17 中引入的标准库模板类。它提供了一种表示可选值的方式,也就是值可能存在,也可能不存在。它属于头文件。的主要目的是避免使用特殊的标志值(例如,空指针或魔法数)来表示缺少值。相反,它封装了一个可选值,让您以更类型安全和表达性更强的方式处理它。本教程详细介绍了 C++ 标准库中的类。它是 C++17 引入的一个非常有用的特性,提供了一种表示可选值的方式,避免了使用裸指针或特殊标志值的不便和风险。通过,我们可以更加安全和优雅地处理可能缺失的值,提高了代码的健壮性和可读性。在使用。原创 2023-08-01 11:36:14 · 11362 阅读 · 6 评论 -
Kylin 麒麟 Qt软件 QtCreator 中文输入法问题
Kylin 麒麟 Qt软件 QtCreator 中文输入法问题麒麟默认 搜狗输入法,或自己下载搜狗输入法(新)安装 sudo apt-get install fcitx-frontend-qt5通常安装fcitx-frontend-qt5在/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts下更改权限 775 777 X重启qtCreator 不行则reboot。原创 2023-07-12 11:24:33 · 4331 阅读 · 0 评论 -
Modern-cpp-tutorial现代c++教程阅读笔记,详细总结
【代码】Modern-cpp-tutorial现代c++教程阅读笔记。原创 2023-06-01 14:42:42 · 329 阅读 · 0 评论 -
std::exception自定义异常捕获类
在这个例子中,我们定义了一个自定义的异常类 `MyException`,它继承自 `std::exception`。在 `main()` 函数中,我们通过捕获 `std::exception` 引用来捕获任何继承自 `std::exception` 的异常,并打印出异常消息。捕获的类型为 `const std::exception&`,以便可以捕获任何继承自 `std::exception` 的异常。2. 创建自定义异常类 `MyException`,并继承自 `std::exception`。原创 2023-05-24 14:41:45 · 984 阅读 · 0 评论 -
std::weak_ptr的使用、和shared_ptr 的区别与联系 、将 `std::weak_ptr` 作为参数传递的好处
是 C++ 标准库中的一个智能指针,用于解决共享资源的所有权问题。它允许共享资源的引用,但不会增加资源的引用计数。,不会增加资源的引用计数。它主要用于解决循环引用导致的内存泄漏问题。相互配合使用,可以避免引发循环引用导致的内存泄漏问题。函数,用于获取一个指向共享资源的。希望这些信息能够帮助你理解和使用。是否已经被销毁或者过期。已经被销毁或者过期,那么。函数,用于检查原始的。已经不存在,无法通过。已经被销毁或者过期,原创 2023-05-22 14:15:55 · 1456 阅读 · 0 评论 -
查看dll的附加依赖项 dumpbin
Dependency比较慢。原创 2023-04-23 17:18:07 · 857 阅读 · 1 评论 -
to_string 精度
它将一个长双精度浮点数转换为字符串,并控制转换结果的小数位数。这三个头文件,以便使用流操作、字符串流和字符串类的相关功能。获取流中的字符串,并将其作为转换结果返回。设置流的输出格式为定点表示法,再通过。,用于将浮点数转换为字符串。是指定结果字符串的小数位数。是要转换的长双精度浮点数,在函数内部,我们创建了一个。将浮点数写入流后,我们通过。请注意,上述代码需要包含。上述代码定义了一个函数。原创 2023-05-19 16:29:25 · 1239 阅读 · 0 评论 -
Jenkins use Jenkinsfile cmake build or msbuild
【代码】Jenkinsfile cmake。原创 2023-04-19 16:24:59 · 763 阅读 · 2 评论 -
timeval 计时器
【代码】timeval 计时器。原创 2023-04-12 16:03:24 · 681 阅读 · 0 评论 -
c++ 11 强类型枚举 注意事项, 以及获取枚举值方式
不能够被隐式的转换为整数,同时也不能够将其与整数数字进行比较,更不可能对不同的枚举类型的枚举值进行比较。11 强类型枚举 enum class。显示的进行类型转换->获得枚举值。原创 2023-02-01 11:19:04 · 1650 阅读 · 0 评论 -
std::string std::wstring char wchar std::wstring_convert相互转换
c++字符转换原创 2022-10-24 15:18:33 · 3739 阅读 · 0 评论 -
字符换分割(正则表达式)<regex>-c++
主要使用regex,正则表达式进行,简单好用!原创 2022-08-24 09:43:29 · 3693 阅读 · 0 评论 -
使用Cmake生成OpenCV源代码工程的解决方案VS2017-OpenCV4.10.0
OpenCV的安装与实现VS环境设置,VS2017与OpenCV4.1.0的文件选择https://blog.youkuaiyun.com/cfl997/article/details/92829765cmake安装:cmake 官网(https://cmake.org/download/)下载cmake安装包,有如下两种:1、手动编译、安装的2、可执行文件直接安装就好了。...原创 2019-12-05 23:03:16 · 7462 阅读 · 0 评论 -
QT中文乱码的问题两种解决办法C2001
#pragma execution_character_set("utf-8")原创 2021-06-19 15:16:55 · 242 阅读 · 0 评论 -
新建C++语言编译系统sublimetext无法输出问题彻底解决办法cmd窗口
新建C++语言编译系统选择tool –> Build System –> New Build System(中文是:工具–> 编译系统 –> 新编译系统)删除其中内容填写下面代码{ // "shell_cmd": "make" "encoding": "utf-8", "working_dir": "$file_path", "...原创 2019-11-13 19:48:53 · 8173 阅读 · 0 评论 -
C语言32个关键字(数据类型关键字、流程控制关键字)
磊磊分享一下c语言的关键字!如果对C++STL感兴趣可以看一下:希望对你有所帮助!别在找提高C++晦涩难懂的知识了。提高效率!这里有C++STL——全面总结详细教程(附案例解析)(持续更新中) C语言32个关键字 第一类:数 据类型关键 字...原创 2020-04-28 01:58:56 · 1800 阅读 · 0 评论 -
c++字符char转换为wchar(wcstombs)osg
wcstombs示例:/* wcstombs example */#include <stdio.h> /* printf */#include <stdlib.h> /* wcstombs, wchar_t(C) */int main() { const wchar_t str[] = L"wcstombs example"; ch...原创 2020-04-17 08:50:48 · 9980 阅读 · 0 评论 -
stringstream数字保留多少位小数点的处理
小数点后几位的处理保留两位小数处理如下: std::stringstream ss1; ss1.precision(2); ss1.setf(std::ios::fixed); ss1 << 123.123456; std::string str = ss1.str();其余保留多少位可以用以上方法。...原创 2020-04-16 16:51:33 · 14318 阅读 · 0 评论 -
什么是符号表、记号表c++ c symbol-tables
符号表在这里有两种常见且相关的含义。首先,目标文件中有符号表。 通常,C 或 C++ 编译器将单个源文件编译为扩展名为 .obj 或 .o 的目标文件。 这包含链接器可以处理到工作应用程序或共享库中的可执行代码和数据的集合。 目标文件中有一个称为符号表的数据结构,它将目标文件中的不同项目映射到链接器可以理解的名称。 如果从代码中调用函数,编译器不会将例程的最终地址放入目标文件中。 相反,它在代码中放入一个占位符值并添加一个注释,告诉链接器从它正在处理的所有目标文件中查找各种符号表中的引用,并将最终位原创 2021-09-28 12:50:25 · 6809 阅读 · 0 评论 -
QTPDB源码调试
再此之前请确保:安装时已经勾选Source选项首先在qt的安装目录下找到MaintenanceTool.exe:设置临时资料档案库添加三条:https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_5141/https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/tools_mingw/https://download.q原创 2021-06-25 12:50:11 · 10632 阅读 · 0 评论 -
析构函数为虚函数的作用
如果要用继承,那么一定要让析构函数是虚函数如果一个函数是虚函数,那么在子类中也要是虚函数#include iostream.hclass Base{ public: Base(){ cout<<"Constructing Base";} // this is a destructor: ~Base(){ cout<<"Destroying Base";}};class Derive: public Bas...原创 2020-11-18 16:21:46 · 10867 阅读 · 0 评论 -
还是有必要提醒一下,用陌生人的电脑,密码一定不要乱输入,容易被窃取。(C/C++)
最近年底了,有点闲,写了个键盘读取。只是实现隐藏运行,读取输入的位置。没有实现联网和开机自启。就是想提醒一下,出去上网,在公司里借用其他同事电脑等等,在不是自己电脑的情况下都不要输入有关个人隐私的信息因为你的每一个操作都有可能被记录!我在写这篇博客时输入的标题:还是有必要提醒一下,……吧啦吧啦吧啦吧啦~~~~~~QQ登陆也是没有问题的:、百度登陆也没有什么问...原创 2019-12-16 20:47:15 · 20030 阅读 · 0 评论 -
string反向排序
std::string str("cvicses"); std::string s(str.rbegin(),str.rend()); std::cout << s <<std::endl; return 0;//输出:sescivc原创 2020-11-19 16:16:14 · 10794 阅读 · 0 评论