C++笔记
文章平均质量分 70
qzy0621
这个作者很懒,什么都没留下…
展开
-
C++启动其它进程的方式
C++启动其它进程的方式。原创 2024-09-28 17:13:07 · 817 阅读 · 0 评论 -
C++ 插件管理
- 插件开发是一种高内聚低耦合的软件开发方式- 通过独立的插件开发能够将不同的插件功能进行组合,从而实现灵活的即插即用以适应不断变化的需求和技术- 为用户提供一个便捷的方式来管理和使用这些插件,从而推动应用程序的功能不断丰富和完善原创 2024-05-26 15:45:51 · 1002 阅读 · 0 评论 -
C++ 优化字符串的使用
改动后平均每次调用花费 1.47 微秒,相比 remove_ctrl_mutating() 提高了 17%改动后平均每次调用花费 1.72 微秒,相比remove_ctrl() 性能提升了 13 倍。测试结果是每次调用 remove_ctrl_cstrings() 的时间为 0.15 微秒。使用包含C++11标准的编译器,因为有移动构造函数和右值引用,可以减少一些不必要的复制。:解析字符串和按标记将字符串分段方面格外优秀,且兼容 std::string。通过几种方式对其进行优化。原创 2023-11-11 18:48:36 · 292 阅读 · 0 评论 -
C++掩码形式存储读取数据
C++掩码形式存储读取数据原创 2023-03-18 14:52:17 · 156 阅读 · 1 评论 -
容器Vector判断是否有重复元素
判断vector中元素是否有相同元素(内置类型、结构体)原创 2023-03-12 16:44:59 · 4981 阅读 · 0 评论 -
WindowsAPI 创建线程池
使用Windows API创建线程池原创 2022-12-04 16:21:31 · 578 阅读 · 0 评论 -
C++创建子进程
C++创建子进程原创 2022-11-03 21:30:43 · 1792 阅读 · 0 评论 -
委派构造函数
C++11 委派构造函数原创 2022-10-15 11:22:35 · 248 阅读 · 0 评论 -
for_each使用记录
for_each使用原创 2022-06-10 11:25:26 · 477 阅读 · 0 评论 -
C++中常用的运算符重载
C++运算符重载重载现有的运算符+运算符+在类内重载运算符+在结构体内重载运算符==在结构体内重载,使用算法在容器中查找运算符<<在类内重载,实现变体流C++ 中的内置运算符大部分都可以重载成员访问运算符(.:)、成员指针访问运算符(., ->)等不能重载,具体参考C++ 重载运算符和重载函数重载后运算符的调用就像是函数的调用运算符重载定义形式:返回值的类型 operator重载的符号(参数){ ...... //具体的实现}重载现有的运算原创 2022-05-16 20:36:30 · 213 阅读 · 0 评论 -
右值引用和移动构造函数
移动构造函数和右值引用C++左值和右值C++右值引用拷贝构造函数和右值引用移动构造函数介绍当类中有指针类型的成员变量时,复制构造函数需要使用深拷贝,若申请了大量的堆空间,那么深拷贝操作会影响 对象初始化的执行效率,c++11标准引入了右值引用(一种新的 C++ 语法)和移动构造,可以用来提高效率。C++左值和右值C++右值引用拷贝构造函数和右值引用参考:C++移动构造函数#include <iostream>class demo {public: demo() /原创 2022-05-02 14:51:09 · 280 阅读 · 0 评论 -
浅谈stringstream的用法
static std::string GenerateSVCLog(const std::string& szKeyWord, unsigned long long int szErrorId) { std::stringstream ssLog; ssLog << kszLBracket << szKeyWord << kszRLBracket; ssLog.setf(std::ios::showbase.原创 2022-04-22 10:18:49 · 977 阅读 · 0 评论 -
函数放在头文件中时被多次包含,编译报错:重定义
场景分析头文件Main函数包含头文件XLog.h,正常输出添加PrintLog1.h头文件包含头文件XLog.h,正常输出添加PrintLog2.cpp文件包含头文件XLog.h,编译出错函数放在头文件中时被多次包含,编译出错原因解决方法头文件假设有头文件XLog.h#pragma once#include <string>std::string LogTest(const std::string& szLog) { return szLog;原创 2022-04-20 11:32:19 · 2122 阅读 · 0 评论 -
复制构造函数
复制构造函数和深拷贝编译器调用复制构造函数优化说明原创 2022-04-13 16:27:42 · 189 阅读 · 0 评论 -
使用宏区别不同的VS和C++标准的版本
__cplusplus__cplusplus(_MSVC_LANG)__cplusplus(_MSVC_LANG)区别是C++还是C,C中没有定义这个宏#include <stdio.h>int main() {#ifndef __cplusplus printf("C program.\n");#else printf("C++ program.\n");#endif return 0;}程序在C和C++兼容,编译出的C目标文件和C++目标文原创 2022-04-13 15:57:14 · 2030 阅读 · 0 评论 -
c/c++读写照片、传输文件方式
对图片(文件)传输的两种方式原创 2022-03-20 10:52:59 · 2901 阅读 · 0 评论 -
C++ 递归函数调用
#include <iostream>void Call(int n){ std::cout << "Call: " << n << std::endl; if (n > 0) { Call(n - 1); //调用自己 }}int main(){ Call(10); system("pause"); return 0;}结果原创 2021-09-27 19:55:07 · 126 阅读 · 0 评论 -
文件常用操作
可能需要用到宽字节,可以在工程属性值设置为多字节:右键选择属性–选择高级–高级属性中的字符集选择多字节字符集用到的头文件:#include “Windows.h”1.判断文件是否存在int main(){ std::string szPath = "E:/Test.xml"; struct stat buffer; //文件是否存在,存在返回0 if (0 == stat(szPath.c_str(), &buffer)) { std::cout << "File原创 2021-09-22 10:45:33 · 154 阅读 · 0 评论 -
计时器的使用
封装计时器原创 2021-08-27 17:43:52 · 44 阅读 · 0 评论 -
系统时间获取方式
boost库获取系统当前时间#include<iostream>#include<string>#include "boost/date_time/posix_time/posix_time.hpp"int main(){ using namespace boost::posix_time; ptime ptimeCurretTime = second_clock::local_time(); std::string tstCalibTime = to_iso_ext原创 2021-08-27 17:38:27 · 184 阅读 · 0 评论 -
C++11 智能指针与垃圾回收
在实际的 C++ 开发中,我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的。比如:有些内存资源已经被释放,但指向它的指针并没有改变指向(成为了野指针),并且后续还在使用;有些内存资源已经被释放,后期又试图再释放一次(重复释放同一块内存会导致程序运行崩溃);没有及时释放不再使用的内存资源,造成内存泄漏,程序占用的内存资源越来越多。C++ 虽然从来没有公开得支持过垃圾回收机制,但 C++98/03 标准中,支持使用 auto_p原创 2021-08-27 17:29:58 · 2111 阅读 · 4 评论 -
memcpy和assign的简单使用
void memcpy(voiddest, const void *source, size_t n);由source指向地址为起始地址的连续n个字节的数据复制到以dest指向地址为起始地址的空间内。说明:1.source和dest所指内存区域不能重叠,函数返回指向dest的指针。2.与strcpy相比,memcpy并不是遇到’\0’就结束,而是一定会拷贝完n个字节。3.如果目标数组dest本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n)。如果要追加数据,则每次执行memcpy后原创 2021-08-27 17:08:54 · 249 阅读 · 0 评论 -
c++ 中ref关键字的应用
c++ 中 本身可以使用 & 来实现引用 ,那为什么还会出现ref 呢?ref()方法的返回值是reference_wrapper类型,这个类的源码大概的意思就是维持一个指针,并且重载操作符。ref()能用包装类型reference_wrapper来代替原本会被识别的值类型,而reference_wrapper能隐式转换为被引用的值的引用类型。std::ref 用于包装按引用传递的值。std::cref 用于包装按const引用传递的值。函数调用,有无ref使用的影响;void fun(原创 2021-08-27 16:39:59 · 6101 阅读 · 0 评论 -
C++ explicit(显示声明)关键字详解
没有使用explicit关键字的类声明, 即默认为implicit隐式声明隐式声明应用示例:class CXString{public: CXString(int size) { m_iSize = size; } virtual~CXString() {};public: int m_iSize;};int main(){ CXString string1(24); //可以调用 CXString str转载 2021-08-27 16:21:06 · 1432 阅读 · 0 评论 -
数学公式函数调用说明
为了把现实中的数学公式利用到计算机里面,所以在库中已经实现了很多数学函数的代码,我们直接调用就可以了!依赖头文件#include <math.h> 或 #include using namespace std;注意:C++中cos,sin,asin,acos,tan,atan这些三角函数操作的是弧度,而非角度,参数都是double类型假设 A表示角度 B表示弧度 A和B之间的转换:A = B* 180 / PI;B = A* PI / 180;#i原创 2021-08-27 16:04:23 · 635 阅读 · 0 评论 -
字符串转数字操作说明
atoi、strtoi区别atoi和strtol都是c里面的函数,他们都可以将字符串转为int,它们的参数都是const char*,因此在用string时,必须调c_str()方法将其转为char*的字符串。或者atof,strtod将字符串转为double。int main(){ std::string strnum = " 232s3112"; int num1 = atoi(strnum.c_str()); long int num2 = strtol(strnu原创 2021-08-27 15:50:00 · 452 阅读 · 0 评论 -
auto在容器中的应用
注意:没有引用&,只能读取容器中的值,但不能更改有引用&,可以读取容器中的值,也可以更改vector和map都可以,下面以vector为例#include <iostream>#include <vector>int main(){ std::vector<std::string> vecTest; vecTest.push_back("1"); vecTest.push_back("2"); vecTes原创 2021-08-27 15:36:37 · 253 阅读 · 0 评论 -
字符串按字符分割
有时需要把字符串按照字符进行分割为几个字符串,方法如下:调用函数void SplitString(const std::string& sSrc, const std::string& sSeparator, std::vector<std::string>& vecSub){ std::string::size_type posSubstringStart = 0; std::string::size_type posSeparator = sS原创 2021-08-27 15:21:37 · 1750 阅读 · 0 评论 -
结构体初始化
结构体初始化原创 2021-08-27 14:43:04 · 188 阅读 · 0 评论