
C++基础实战
文章平均质量分 55
C++编程基础
telllong
c/c++/golang/js/java/python programer
展开
-
C++中生成指定长度的随机字符串的方法
C++中生成指定长度的随机字符串的方法原创 2024-04-08 19:03:58 · 1612 阅读 · 0 评论 -
Qt 容器类整理与使用
QList详细介绍QList是Qt框架中的一个重要的泛型容器类,它是动态数组的实现,但是它的内部实现并不是简单的连续内存区域,而是根据元素大小和数量选择最优的存储策略(可能是数组或者链表)。这意味着QList能够灵活地应对不同场景下的需求,尤其是在元素较小或者大量元素已预先分配空间的情况下,它会尽可能地利用连续内存来加速随机访问。特点与功能模板类:QList是一个模板类,可以存储任何QObject派生类或者其他POD类型的数据。动态性:QList的大小可以在运行时动态调整,可以随时添加或移除元素。原创 2024-04-07 14:16:12 · 1848 阅读 · 1 评论 -
std::for_each 简单使用
函数对象可以是普通函数指针、函数对象类的实例,或者是使用 lambda 表达式创建的匿名函数对象。函数是一个算法,其参数列表中只接受一个可调用对象(函数或函数对象),并且该可调用对象必须接受一个参数,通常是容器中元素的类型。它的第三个参数期望的是一个可调用对象,而函数模板并不是可调用对象。这样可以实现对不同类型的元素执行相同的操作,只要该操作可以通过可调用对象表示。的第三个参数,以对不同类型的 vector 执行相同的操作。的第三个参数,以对不同类型的 vector 执行相同的操作。原创 2024-01-17 17:35:55 · 905 阅读 · 1 评论 -
使用openssl计算文件的md5,sha256,以及用aes算法对密码进行加密
要使用 OpenSSL API 计算文件的 MD5 值,您可以使用 OpenSSL 提供的一组函数。计算文件的 SHA-256 值与计算 MD5 值类似,只需在代码中使用 OpenSSL 的 SHA-256 相关函数即可。请注意,这只是一个简单的示例,实际应用中应该更加注意密钥的安全生成和管理。函数负责打开文件、读取文件内容并更新 SHA-256 上下文,最后计算最终的 SHA-256 值。在 Windows 上,您需要链接相应的 OpenSSL 静态库或动态库,具体取决于您的配置。原创 2024-01-05 11:07:40 · 1580 阅读 · 0 评论 -
C++ 生成数据唯一的UUID
在C++中,生成唯一的UUID(通用唯一标识符)通常需要使用外部库,因为标准的C++库并没有直接提供UUID生成的功能。一个常用的库是Boost C++ 库,它提供了UUID生成的功能。原创 2024-01-03 16:07:30 · 5293 阅读 · 0 评论 -
Qt 加载图片并展示loading效果
这个类通过使用Qt的网络访问模块(QNetworkAccessManager)从指定的URL加载图片,并在加载过程中显示loading效果。同时,还使用了布局管理器(QVBoxLayout)来组织控件的布局,以及QProgressBar来显示加载进度。这个类的设计使得在GUI应用程序中轻松地实现带有loading效果的图片加载功能。一个基于Qt框架的C++类,用于在一个窗口中显示一张图片,并在加载图片时显示loading效果。原创 2024-01-03 14:47:13 · 1212 阅读 · 0 评论 -
std::array 使用举例
std::array是 C++ 标准库提供的容器,它表示一个具有固定大小的数组。与裸数组相比,std::array具有更多的优势,如提供了方便的成员函数、支持迭代器等。下面是对std::array的详细介绍以及使用示例。std::array。原创 2023-12-29 14:28:41 · 887 阅读 · 0 评论 -
C++ enum class 如何使用
enum class提供了更好的类型安全性和作用域限定,使得枚举更加灵活和可维护。它是 C++11 引入的一个重要特性,推荐在新的代码中使用。原创 2023-12-29 13:35:34 · 1532 阅读 · 0 评论 -
std::unordered_map 简单使用
是 C++ 标准库中的一种关联容器,用于实现键值对的存储和快速查找。它基于哈希表实现,具有以下特性:std::mapstd::mapstd::map以下是在这个例子中,我们创建了一个,插入了一些键值对,并且演示了查找和遍历操作。的初始化和赋值方式有多种,取决于使用的 C++ 版本和个人偏好。原创 2023-12-28 14:41:22 · 3487 阅读 · 0 评论 -
std::allocator 如何使用
是 C++ 标准库中的一个内存分配器,用于分配和释放内存。它是 C++ 标准模板库(STL)中的默认分配器,被许多容器类使用,如std::list等。原创 2023-12-28 10:28:13 · 712 阅读 · 0 评论 -
std::iota 函数简单使用
它的作用是用一个连续的范围内的递增序列填充容器。是 C++ 标准库中的一个算法,位于。将从1开始生成递增的整数,并填充到。以下是一个简单的示例,说明了。原创 2023-12-15 12:39:07 · 1740 阅读 · 0 评论 -
C++几种cast该如何使用
在选择类型转换时,应该根据具体的情况和需求谨慎选择合适的转换方式,避免不必要的安全问题。原创 2023-12-06 14:52:48 · 757 阅读 · 0 评论 -
全局变量初始化时机测试(动态库,静态库,执行程序中)
如果动态库是动态加载的,也就是在程序运行时才根据需要加载动态库,那么动态库中的全局变量会在加载动态库时初始化,和动态库中的静态变量一样。如果动态库是静态加载的,也就是在编译链接时就确定了动态库的位置和符号,那么动态库中的全局变量会在程序启动时就初始化,和静态库中的全局变量一样。动态库中的全局变量是指在动态库中定义的非静态变量,它们可以被动态库中的其他函数或者加载动态库的程序访问。动态库中的全局变量什么时候初始化,取决于动态库的加载方式和操作系统的实现。linux 和 windows。原创 2023-11-09 14:48:13 · 1059 阅读 · 0 评论 -
spdlog简单介绍和使用
spdlog是一个C++的快速、可扩展的日志库,具有高性能和友好的接口。它支持多种日志输出目标,如控制台、文件、远程服务器等,并具有强大的日志格式化和异步日志记录功能。以下是对spdlog。原创 2023-11-07 10:08:47 · 1975 阅读 · 0 评论 -
gTest简单使用
您可以从 Google Test 的 GitHub 仓库中获取源代码,然后编译它,或者使用包管理工具(如CMake或Conan)来安装它。您可以根据项目的需要编写更复杂的测试用例,并使用gtest的各种断言来验证代码的正确性。Google Test(通常称为 gtest)是一个用于C++的流行的单元测试框架。在您的C++项目中,创建一个测试项目或测试目录,用于存放测试文件。这将安装Google Test到系统中,以便您可以在您的项目中使用它。宏中编写测试代码,并使用gtest提供的断言来验证测试结果。原创 2023-11-02 14:54:05 · 549 阅读 · 0 评论 -
abs, fabs ,fabsf区别以及使用说明
是C/C++标准库中用于取绝对值的函数,它们的主要区别在于处理的数据类型和返回值类型。适用于单精度浮点数。你应该选择适当的函数来处理特定类型的数值。适用于双精度浮点数,而。原创 2023-10-31 16:06:34 · 14650 阅读 · 0 评论 -
C++中将数字转换成string的方法汇总
是最常用和最推荐的方法,因为它简单、安全,且不涉及手动分配缓冲区。然而,根据具体的需求,选择适当的方法是很重要的。如果需要更高级的格式化或其他操作,可能需要使用其他方法。函数,可以将整数、浮点数以及其他数字类型转换为字符串,如前面的示例所示。类来将数字转换为字符串,这样可以更精细地控制格式。可以将数字格式化为字符串。使用C++标准库中的。原创 2023-09-27 11:04:43 · 8700 阅读 · 0 评论 -
glog简单介绍和使用
glog(Google's Logging Library)是Google开发的一个C++日志记录库,用于在应用程序中实现高效的日志记录。它提供了强大的日志记录功能,可以轻松地将不同级别的日志消息输出到控制台或日志文件中,并支持日志消息的格式化和级别控制。你可以通过源码构建并手动安装,也可以使用包管理工具,如apt-get(Ubuntu)或brew(macOS)来安装。你将看到glog库的日志消息输出到控制台,具体的日志级别取决于你在程序中使用的。在这个示例中,我们包含glog的头文件,并使用。原创 2023-09-26 10:49:31 · 1783 阅读 · 0 评论 -
std::async简单使用
std::async是C++11引入的一个用于异步执行函数或函数对象的工具。它可以用于并行地执行函数,并在需要时获取函数的返回值。下面是一个简单的示例,演示了如何使用std::async// 一个简单的函数,将两个整数相加并返回结果// 使用std::async异步执行函数// 在需要时获取函数的返回值return 0;在上面的示例中,我们首先定义了一个简单的函数Add,它将两个整数相加并返回结果。然后,我们使用std::async来异步执行Add函数,传递两个整数参数(5和3)。原创 2023-09-22 12:00:41 · 437 阅读 · 0 评论 -
std::thread简单使用
是 C++ 标准库中用于多线程编程的类。它允许你创建和管理线程,使程序能够并发执行不同的任务。以下是关于。原创 2023-09-22 11:55:22 · 300 阅读 · 0 评论 -
C++11 新特性
C++11是C++的第二个主要版本,也是自C++98以来最重要的更新。在2011年8月12日最终获得ISO批准之前,它被命名为'C++0x',因为预计它将在2010年之前发布。C++11引入了大量的变化,旨在规范现有实践并改善C++程序员可用的抽象¹。C++11标准库也进行了改进,新增了算法、容器类、原子操作、类型特征、正则表达式、新的智能指针、async()设施以及多线程库³。原创 2023-09-06 10:58:53 · 194 阅读 · 0 评论 -
C++17 std::string_view介绍与使用
std::string_view是C++17增加的新内容。它是一个轻量级的、只读的字符串视图,可以用来表示一个字符串或字符串的一部分。std::string_view可以提高代码的可读性、可维护性和性能。std::string_view与std::string的主要区别在于,std::string_view只读,而std::string可读可写。这意味着std::string_view不必担心对字符串的修改,从而可以提高性能。原创 2023-09-05 15:44:49 · 544 阅读 · 0 评论 -
C++11 std::transform函数使用说明
在这个例子中,我们使用了一个 lambda 函数 [](int x) { return x * 2;} 作为一元操作函数。这个 lambda 函数接收一个整数参数 x,并返回 x * 2。我们把这个 lambda 函数传递给 std::transform,以便它能够对输入范围中的每个元素执行这个操作。std::transform是C++标准库中的一个算法,它用于对输入范围内的元素进行操作,并将结果存储在输出范围内。运行上述程序,你将看到输出:2 4 6 8 10,这是输入范围中的每个元素乘以2后的结果。原创 2023-08-30 18:16:47 · 1400 阅读 · 0 评论 -
std::string中 find,rfind,find_first_of,find_last_of, find_first_not_of,find_last_not_of等函数的介绍和使用
C++ 关于find函数的总结原创 2023-08-30 15:48:21 · 2455 阅读 · 0 评论 -
C++ ostream_iterator简单使用
ostream_iterator使用原创 2023-08-23 15:03:51 · 1075 阅读 · 0 评论 -
C++中提供的一些关于查找元素的函数
C++可用于查找的函数汇总原创 2023-08-22 18:10:30 · 1578 阅读 · 0 评论 -
分别在linux和windows上设置socket为阻塞模式
在 Linux 和 Windows 系统中,都可以将 socket 设置为非阻塞模式。原创 2023-08-15 16:58:15 · 1247 阅读 · 0 评论 -
C++基础:lambda介绍以及简述值捕获、引用捕获、隐式捕获的区别以及注意事项
Lambda 表达式与普通函数类似,也有参数列表、返回值类型和函数体,只是它的定义方式更简洁,并且可以在函数内部定义。需要注意的是,在使用引用捕获时,要确保被引用的对象在 lambda 表达式执行时仍然存在。引用捕获传递的是引用,后边值修改后引用也会改变,值捕获传递的是此时此刻的值,后续做的修改不影响当前值。的值时,第一个 lambda 函数输出新的值,而第二个 lambda 函数输出原来的值。的值,lambda 函数内部仍然使用的是原来的值。的值时,lambda 函数内部也会使用新的值。原创 2023-08-14 16:22:09 · 1074 阅读 · 0 评论 -
cmake判断端操作系统类型,C/C++语言判断操作系统类型
在cmake或者C++代码中判断操作系统类型原创 2023-08-14 10:09:09 · 2114 阅读 · 0 评论 -
常见面试题:字节序判别和转换
在计算机中,字节序指的是多字节数据的存储顺序。最常见的字节序有两种:大端字节序(Big-Endian)和小端字节序(Little-Endian)。大端字节序是指最高有效位(Most Significant Bit,简称MSB)保存在内存的低地址中,而最低有效位(Least Significant Bit,简称LSB)保存在内存的高地址中。小端字节序则相反,LSB保存在内存的低地址中,而MSB保存在内存的高地址中。在进行网络通信或跨平台数据交换时,需要确保数据的一致性,因此需要判别或转换字节序。原创 2023-08-10 17:35:53 · 323 阅读 · 0 评论 -
C++所有运算符及其优先级表格
C++所有运算符及其优先级原创 2023-08-10 17:07:56 · 1088 阅读 · 0 评论 -
tcp发送整型,结构体等数据的方法
通过socket发送整型数据和结构体原创 2023-08-09 16:00:13 · 2600 阅读 · 1 评论 -
level介绍与使用
LevelDB是一个开源的键值存储库,由Google开发,用于提供快速的持久化存储。LevelDB使用B树作为底层存储结构,支持高效地写入、更新和读取数据。它支持多个并发读取操作和单个写操作,因此非常适合用于高并发的应用程序。LevelDB可以在Linux、Windows和Mac OS X等多个平台上运行,并提供了多种编程语言的API,如C++、Java、Python、Node.js等,使得开发者可以轻松地将其集成到自己的应用程序中。LevelDB被广泛用于各种应用场景,如分布式存储、缓存、日志存储等。原创 2023-08-07 18:02:44 · 412 阅读 · 0 评论 -
跨平台工具精确地计算函数执行时间
高精度计算函数执行时间原创 2023-08-02 18:11:08 · 311 阅读 · 0 评论 -
C/C++开源库推荐
C/C++开源库推荐原创 2023-07-27 17:58:24 · 6011 阅读 · 4 评论 -
windows上的IOCP如何使用,并用C++实现多客户端服务器
(Input/Output Completion Ports)来实现高性能的I/O多路复用机制。是Windows系统中一种高效的异步I/O机制,可以用于实现高并发的网络服务器。的代码相对复杂,需要理解异步I/O、事件驱动编程等概念。实现多客户端服务器的基本步骤,需要注意的是,在Windows系统中,可以使用。原创 2023-05-26 17:19:38 · 2066 阅读 · 0 评论 -
linux上的epoll如何使用,并用C++实现多客户端服务器
是Linux系统中的一种高效的I/O多路复用机制,可以用于实现高并发的网络服务器。的代码相对复杂,需要理解非阻塞I/O、事件驱动编程等概念。实现多客户端服务器的基本步骤,需要注意的是,原创 2023-05-26 17:18:39 · 749 阅读 · 0 评论 -
装饰者模式介绍-并用C++实现
装饰者模式是一种结构型设计模式,它允许动态地将行为添加到对象中,而不需要改变其类。在该模式中,装饰者类包装原始类,并在其上添加新的行为或修改现有行为,从而扩展其功能。装饰者模式的应用场景是需要在不修改现有代码的情况下添加新功能或修改现有功能的情况。在运行时动态地添加或删除对象的行为。在不创建子类的情况下,扩展对象的功能。给一个对象增加多个不相关的行为,而不需要创建复杂的继承结构。原创 2023-05-23 13:51:00 · 134 阅读 · 0 评论 -
抽象工厂模式介绍--并用C++简单实现
抽象工厂模式是一种创建型设计模式,它提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。它允许客户端使用抽象接口来创建一组相关的对象,而不必关心它们的具体实现。系统需要独立于它的产品的创建、组合和表示时。系统需要由多个系列中的一个来配置时。需要强调一组相关产品对象的设计以便进行联合使用时。提供一个产品类库,而只想显示它们的接口而不是实现时。原创 2023-05-22 14:04:30 · 161 阅读 · 0 评论 -
std::move和std::forward函数介绍和使用
std::move和std::forward是C++11中的两个重要的模板函数,都被用于实现完美转发和移动语义。原创 2023-05-18 14:50:35 · 301 阅读 · 0 评论