![](https://img-blog.csdnimg.cn/20210827142504200.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++学习
文章平均质量分 54
记录C++学习
去往火星
这个作者很懒,什么都没留下…
展开
-
【类型转换】C++中char、char*、int、string相互转换函数及string转不同进制数函数
1、这些在做编程题处理输入数据时常用,需要牢记。原创 2024-06-20 16:08:20 · 209 阅读 · 0 评论 -
C/C++中的联合体union介绍
union,中文名“联合体、共用体”,在某种程度上是类似结构体struct的一种数据结构,联合体(union)和结构体(struct)同样可以包含很多种数据类型和变量。结构体(struct)中所有变量是“共存”的——优点是“有容乃大”,全面;缺点是struct内存空间的分配是粗放的,不管用不用,全分配。联合体(union)中是各变量是“互斥”的——缺点就是不够“包容”,即任何两个成员不会同时有效;但优点是内存使用更为精细灵活,也节省了内存空间。当多个数据需要共享内存或者多个数据每次只取其一时。原创 2024-06-20 13:49:26 · 549 阅读 · 0 评论 -
C++对CSV文件进行读,写,追加操作
与第2部分基本相同,只不过是以iso::app方式打开,当文件不存在时会自动创建。原创 2024-06-05 11:15:22 · 301 阅读 · 0 评论 -
Windows系统下C++使用正则表达式判断文件名有效性
【代码】Windows系统下C++使用正则表达式判断文件名有效性。原创 2024-05-30 16:56:07 · 90 阅读 · 0 评论 -
C++判断文件夹是否存在,不存在则创建(linux和windows)
替换为rkdir即可。原创 2024-05-22 14:08:44 · 359 阅读 · 0 评论 -
【c++】linux删除文件夹(包括路径下文件)
需要注意的是,在使用 system() 函数时要小心输入的命令,确保命令参数的安全性,避免潜在的安全风险,比如命令注入攻击。建议在使用 system() 函数时谨慎处理用户输入的数据,并进行充分的错误处理和安全性检查。在 Linux 上使用 C++ 删除文件夹的代码可以使用 POSIX 标准库的 头文件和系统调用的 rmdir() 和 remove() 函数。请注意,这只是一个简单的例子,实际应用中可能需要更加复杂的错误处理和安全性检查,例如检查文件夹是否存在、是否有删除权限等。原创 2024-05-22 11:11:38 · 405 阅读 · 0 评论 -
C++ 递归删除目录下所有文件(包括空目录)
【代码】C++ 递归删除目录下所有文件(包括空目录)原创 2024-05-22 11:06:01 · 362 阅读 · 0 评论 -
C:通过fwrite和fread读写数据结构
如果发生错误或到达文件末尾,则 fread()返回的值将小于参数 nmemb,那么到底发生了错误 还是到达了文件末尾,fread()不能区分文件结尾和错误,究竟是哪一种情况,此时可以使用 ferror()或 feof() 函数来判断。返回值: 调用成功返回一个指向 FILE 类型对象的指针( FILE * ),该指针与打开或创建的文件相关联, 后续的标准 I/O 操作将围绕 FILE 指针进行。如果文件名称与已存在的文件相同,则会删除已有文件的内容,文件被视为一个新的空文件。如果文件不存在,则创建文件。原创 2024-05-21 10:32:59 · 790 阅读 · 0 评论 -
C++ ——排序并保留索引
C++自带的排序函数sort只能获得排好序的值,没办法像。下面使用c++11中的。一样同时返回排序索引。原创 2024-05-11 10:53:01 · 165 阅读 · 0 评论 -
【C++】—— 工厂模式详解
1、优势2、缺点尽管工厂模式在许多情况下是一种有用的设计模式,但它也有一些缺点需要考虑:但是尽管工厂模式存在上述缺点,但在许多情况下它仍然是一种有用的设计模式。在实际应用中,我们需要权衡使用工厂模式带来的好处和缺点,并根据具体情况进行选择。工厂模式可以分为三种不同的类型:简单工厂模式、工厂方法模式和抽象工厂模式。简单⼯⼚模式实现由⼀个⼯⼚对象通过类型决定创建出来指定产品类的实例。接下来,我们看代码演示:运行结果如下:工厂方法模式定义一个创建对象的接口,但将实际的实例化延迟到子类中。每个子类都可以根据需原创 2024-05-10 22:20:04 · 752 阅读 · 0 评论 -
C++多态(超级详细版)
多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会 产生出不同的状态。举个栗子:比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人 买票时是优先买票。在继承中要构成多态还有两个条件:1. 必须通过基类的指针或者引用调用虚函数2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写public:virtual void BuyTicket() { cout原创 2024-05-10 16:08:22 · 1174 阅读 · 0 评论 -
史上最全的QMap遍历方式
使用C++11的for循环遍历和std::for_each遍历QMap的方式最为常用和简洁,效率也比较高,占用资源较少。但是,不同的遍历方式适用于不同的场景,需要根据具体情况选择合适的遍历方式。如果需要修改QMap中的元素,应该使用迭代器进行遍历。如果只需要读取QMap中的元素,可以使用const迭代器或者C++11的for循环遍历。原创 2024-04-25 19:11:34 · 855 阅读 · 0 评论 -
C/C++ 静态代码检查工具cppCheck
Cppcheck是一个用于C/C++代码的静态分析工具,它可以帮助开发者检测代码中的错误;Cppcheck可以检测出许多类型的错误,包括语法错误、未使用的函数、内存泄漏、未初始化的变量等;Cppcheck还支持用户自定义规则,这使得开发者可以根据自己的需求定制Cppcheck的行为;使用--suppress如果你想要忽略某些警告,可以在命令行中使用 --suppress 选项。原创 2024-04-22 16:56:35 · 1507 阅读 · 0 评论 -
#include <string> 和 #include <string.h>
一般一个C++的老的带“.h”扩展名的库文件,比如iostream.h。在新标准后的标准库中都有一个。区别除了后者的好多改进之外,还有一点就是后者的东东都塞进了“std”名字空间中。”的头文件,包含一些常用的C字符串处理函数,比如strcmp。C的标准库里碰巧也已经有一个名字叫做“他们是毫无关系的两个头文件。类半点关系也没有,所以。原创 2024-04-18 19:11:45 · 264 阅读 · 0 评论 -
C++ vector容器的swap方法(容器互换)
答案当然是否定的,如下图,原容器容量为5,里面存储了5个数据。当我们再向里面添加数据的时候,因为容器已满,所以容器会动态扩充,但是会多扩充一些空位,以防下次再次增加数据。这样做时有好处的,因为当数据量比较少的时候,将旧容器拷贝至新容器可能会很快,当时当数据量比较大的时候呢?很简单,当vector容器满了,就再重新建一个vector容器,然后将原vector容器的内容拷贝至新容器。,这个匿名对象拥有v的全部数据,但是,没有空闲的空间,也就是说,这个匿名对象的。创建出来的匿名对象是没有空闲空间的,此时,通过。原创 2024-04-17 15:40:25 · 1491 阅读 · 0 评论 -
C++ vector内存分配及正确释放
1.C++ vector:相当于一个动态数组,它的内存会随着size的增加而不断的增长。2.内存分配的两个函数:size()返回实际占用内存的个数capacity(),返回实际申请的空间大小,一般来说,capacity >= size。3.扩容:当capacity和size相等时,vector就会扩容,capacity会成倍增长。一般来说,vector扩容后内存是原来的2倍,但也有说扩容后是原来内存的1.5倍,与操作系统相关。原创 2024-04-11 15:25:59 · 158 阅读 · 0 评论 -
c++数组及初始化
【代码】c++数组及初始化。原创 2024-04-10 11:32:10 · 125 阅读 · 0 评论 -
static在 C++ 中的四种用法
但是注意,静态成员函数无法访问类的非静态成员变量,因为这些变量是与类的实例关联的,而静态成员函数不属于任何具体的类的实例。这个版本的 std::thread 的构造函数会保存 this 指针,并在新的线程中用它来调用成员函数 bar。在这种情况下,我们不能直接传递一个非静态成员函数,因为非静态成员函数需要一个隐含的 this 指针,而我们在创建线程的时候不能提供这个 this 指针。因为非静态成员函数在调用时需要一个对象的上下文,而全局的函数无法提供这样的上下文。即使函数结束,静态局部变量的值也会保留。原创 2024-04-09 14:00:37 · 826 阅读 · 0 评论 -
C++ 命名空间中出现重复定义的情况---头文件中的命名空间定义了变量或者类对象
int b;原创 2024-04-09 12:11:54 · 196 阅读 · 0 评论 -
【C/C++面试必备】声明和定义的区别
声明是用来告诉编译器变量的名称和类型,而不分配内存。// 声明// 定义// 声明// 声明上面代码中,语句 extern int var;表示 var 在别的文件中已经定义,提示编译器遇到此变量时在其它模块中寻找其定义。语句 extern int ble = 10;表示定义了变量 ble,这一点需要注意。即使是 extern ,如果给变量赋值了,就是定义了。定义是为了给变量分配内存,可以为变量赋初值。全局变量或静态变量初始值为0,局部变量初始化为随机值。int value;原创 2024-04-09 12:06:15 · 220 阅读 · 0 评论 -
C/C++中局部变量static用法实例
编译器static是一个很有用的关键字,使用得当可以使程序锦上添花。用于本文件的函数要使用static关键字声明,这是一个良好的编码风格。原创 2024-04-08 15:56:19 · 445 阅读 · 0 评论 -
windows和Linux c++遍历文件目录
【代码】windows和Linux c++遍历文件目录。原创 2024-04-03 15:40:05 · 388 阅读 · 0 评论 -
地球椭球面上多边形面积量算(C++代码)
昨天突然测试的时候发现以前产品中写的地球椭球面上面积计算的代码有点问题,于是今天就彻底修正,从QGIS中抠出代码来用C++重写了一下,新代码可以比较准确计算椭球面上多边形的面积,这个基础函数对空间量算功能中的面积量测非常重要,在这里共享出来供大家参考甚至直接拿过去用。主要的函数是ComputePolygonArea,计算出来的面积单位是平方米。经过测试,可以满足要求。原创 2024-03-22 09:48:28 · 142 阅读 · 0 评论 -
解决VS编译中文报错 error C2001:常量中有换行符
通过把源文件转换为gbk编码,但是只能一个一个文件转换,当导入项目文件较多时,这个方式明显不太好。当然也可以通过python脚本批量转换,但是还是比较麻烦。项目->右键属性->C/C++ -> 命令行,在下方输入框添加 /utf-8,就会在编译时采用utf-8编码来编译。产生原因:文件中有中文字符,但是文件是utf-8格式的,使用msvc编译器编译时就会产生上述错误。通过在项目里设置编译选项,/utf-8。原创 2024-03-14 16:23:25 · 1132 阅读 · 0 评论 -
C++中的常量指针和指针常量
首先是一个指针,然后这个指针指向的里面值是一个常量。里面值不能修改,但是地址可以修改。:本质是一个常量,指针指向这个常量,地址值不可以改变,但是里面的值可以修改。原创 2024-03-11 14:55:59 · 378 阅读 · 0 评论 -
vs2008 unicode工程问题集
问题的原因是字符串ANSI和Unicode编码的区别: VC6与VS2003等默认使用ANSI编码,而VS2008默认采用Unicode。简单的说,ANSI用1个字节表示字符,Unicode用2个字节表示1个字符。b、在左边下拉菜单中,选择configuration properties --> General --> 在左边project default 中character set中设置 not set。如果是自己的函数:检查是否使用#include 改为#include “xxx.h”原创 2024-03-05 12:14:30 · 355 阅读 · 0 评论 -
extern关键字用法全解析
extern 是C/C++语言中表明全局变量或者函数作用范围(可见性)的关键字,编译器收到extern通知,则其声明的变量或者函数可以在本模块或者其他模块使用。对于函数而言,由于函数的声明如“extern int method();”与函数定义“intmethod(){}”可以很清晰的区分开来,为了简便起见,可以把extern关键字省略,于是有了我们常见的函数声明方式“intmethod();”,然而对于变量并非如此,变量的定义格式如“int i;”,声明格式为“extern inti;原创 2024-02-23 14:16:29 · 1599 阅读 · 0 评论 -
C++ Primer学习笔记 第2章 变量和基本类型
初始化不是赋值,初始化的含义是创建变量时赋予其一个初始值,而赋值的含义是把对象的当前值擦除,而以一个新值来代替。用花括号来初始化变量,这种初始化形式称为列表初始化。这种初始化形式有一个重要的特点:如果我们使用列表初始化且初始值存在丢失的风险,则编译器将报错。//错误:转换未执行,因为存在丢失信息的风险//正确:转换执行,确实丢失部分值VS 2019 msvc编译器:如果定义一个变量时没有指定初值,则变量被默认初始化。定义于任何函数体之外的变量被初始化为0。定义在函数体内部的变量将。原创 2023-11-30 14:11:15 · 129 阅读 · 0 评论 -
C++ 问题 怎么在C++11标准语法中调用C++20的类
if!//// __declspec(dllexport)声明导出该函数供外部调用 # ifdef __cplusplus } # endif // __cplusplus # endif //!!//// __declspec(dllexport)声明导出该函数供外部调用 # ifdef __cplusplus } # endif // __cplusplus # endif //!# if!原创 2023-11-22 10:16:44 · 250 阅读 · 0 评论 -
Linux环境下进行C++开发,string函数find()查找不到返回值不是-1的情况
查找不到,返回的不是**-1**的情况,判断条件使用。在Linux环境下进行C++开发,遇到。原创 2023-04-03 11:13:37 · 802 阅读 · 0 评论 -
C++ 写入csv遇到单元格内容有逗号的情况怎么处理
分割的,但是现在我们不想让单元格内容被分割,这种情况该怎么处理呢?做项目时候,遇到写一个csv文件,但是单元格内容有逗号。的情况,我们一般都知道csv默认是以。原创 2023-04-03 11:00:51 · 444 阅读 · 0 评论 -
qt creator无法进入断点,看下这个设置是否有问题
原创 2021-10-12 21:45:03 · 1541 阅读 · 0 评论 -
多态
1.多态的基本概念多态是C++面向对象三大特性之一多态分为两类静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址class Animal{public: //Speak函数就是虚函数 //函数前面加上virtual关键字,变成虚函数,那么编译器在编译的时候就不能确定函数调用了。 virtual原创 2021-08-29 11:33:40 · 97 阅读 · 0 评论 -
继承-2
继承中的对象模型**问题:**从父类继承过来的成员,哪些属于子类对象中?class Base{public: int m_A;protected: int m_B;private: int m_C; //私有成员只是被隐藏了,但是还是会继承下去};//公共继承class Son :public Base{public: int m_D;};void test01(){ cout << "sizeof Son = " << sizeof..转载 2021-08-29 10:06:30 · 72 阅读 · 0 评论 -
继承-1
继承是面向对象三大特性之一有些类与类之间存在特殊的关系,例如下图中:我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候我们就可以考虑利用继承的技术,减少重复代码1. 继承的基本语法继承实现://公共页面class BasePage{public: void header() { cout << "首页、公开课、登录、注册...(公共头部)" << endl; } void footer() { cout <&原创 2021-08-28 20:55:54 · 77 阅读 · 0 评论 -
运算符重载
运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型加号运算符重载作用:实现两个自定义数据类型相加的运算class Person {public: Person() {}; Person(int a, int b) { this->m_A = a; this->m_B = b; } //成员函数实现 + 号运算符重载 Person operator+(const Person& p) { Person temp; temp原创 2021-08-28 20:39:22 · 101 阅读 · 0 评论 -
友元
友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为 friend友元的三种实现全局函数做友元类做友元成员函数做友元全局函数做友元class Building{ //告诉编译器 goodGay全局函数 是 Building类的好朋友,可以访问类中的私有内容 friend void goodGay(Building * building);public: Building() { this->m_SittingRoom = "客厅"; this原创 2021-08-28 20:06:10 · 83 阅读 · 0 评论 -
C++对象模型和this指针
1. 成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上class Person {public: Person() { mA = 0; } //非静态成员变量占对象空间 int mA; //静态成员变量不占对象空间 static int mB; //函数也不占对象空间,所有函数共享一个函数实例 void func() { cout << "mA:" << this->mA <<.原创 2021-08-28 19:54:36 · 76 阅读 · 0 评论 -
对象的初始化和清理
构造函数语法:类名(){}构造函数,没有返回值也不写void函数名称与类名相同构造函数可以有参数,因此可以发生重载程序在调用对象时候会自动调用构造,无须手动调用,而且只会调用一次析构函数语法: ~类名(){}析构函数,没有返回值也不写void函数名称与类名相同,在名称前加上符号 ~析构函数不可以有参数,因此不可以发生重载程序在对象销毁前会自动调用析构,无须手动调用,而且只会调用一次深拷贝与浅拷贝深浅拷贝是面试经典问题,也是常见的一个坑浅拷贝:简单的赋值拷贝操作深拷贝:在堆原创 2021-08-28 16:37:55 · 137 阅读 · 0 评论 -
struct和class区别
在C++中 struct和class唯一的区别就在于 默认的访问权限不同区别:struct 默认权限为公共class 默认权限为私有原创 2021-08-28 15:44:00 · 101 阅读 · 0 评论