C++ 语言教程
C++是C语言的继承,它是一种使用非常广泛的计算机编程语言,C++作为一种静态数据类型检查的、支持多范型的通用程序设计语言,能够支持过程化程序设计、数据抽象化、面向对象程序设计、泛型程序设计、基于原则设计等多种程序设计风格。
老狼主
工作中展现自我,学习中完善自我,生活中乐活自我!
展开
-
C++ 判断合数
判断一个数是否是合数?并输出最大因子。原创 2023-03-06 11:02:03 · 1154 阅读 · 0 评论 -
VC++ 设定Windows程序自启动(非管理员权限)
Windows程序自启动方式有很多种:任务计划、注册表、启动项等等。创建任务计划和启动项,都需要程序具有管理员权限才能写入,在此略过,只介绍启动项方式。要实现启动项方式,必须要知道当前用户下启动项方式的目录,我们才好将程序或程序的快捷方式存放进去。1、获取启动项目录/*得到用户启动项路径*/BOOL GetUserProfilePath(char *pszUserProfilePath){ int iLength = GetEnvironmentVariable("UserProfile",原创 2021-04-30 23:23:15 · 719 阅读 · 1 评论 -
C++ 创建快捷方式
#include <shlobj.h>/*函数功能:对指定文件在指定的目录下创建其快捷方式lpszFileName 目标文件或目录,为NULL表示当前进程的EXE文件。lpszLnkFileDir 快捷方式存在目录,不能为NULL。lpszLnkFileName 快捷方式名称,为NULL表示EXE文件名。lpszWorkDir 起始位置wHotkey 快捷键,为0表示不设置快捷键iShowCmd 运行方式,默认为常规窗口pszD.原创 2021-04-30 23:10:03 · 1257 阅读 · 3 评论 -
C/C++ 课题解答(2)
二维整型数组10*10,计算每行、每列的平均值#include <iostream>using namespace std;#include <time.h>int main(){ int arrayOfInt[10][10]; srand(time(NULL)); for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { arrayOfInt[i][j] = rand(原创 2021-03-23 09:22:53 · 143 阅读 · 0 评论 -
C/C++ 课题解答(1)
随机产生100个字符(a~z)数组arrayOfChar,输入字符c,计算字符c在数组中出现的次数和位置。#include <iostream>using namespace std;#include <time.h>int main(){ char arrayOfChar[100]; int randChar; srand(time(NULL)); for (int i = 0; i < 100; i++) { randChar = rand()原创 2021-03-23 09:19:35 · 273 阅读 · 1 评论 -
C/C++ 打印菱形图案
设计思路 以n行菱形为例(n为奇数),图形分为上下2部分,左上角坐标为(0,0),顶点坐标为(0,n/2),图形上半部分(0~n/2),从第1行到第n/2行,每行菱形数递增1个单位,同时每行菱形的起始坐标递减1个单位。图形下半部分(n/2+1,n),从第n/2+1行到第n行,每行菱形数递减1个单位,同时每行菱形的起始坐标递增1个单位。效果图核心代码#include <iostream>#include <stdio.h>using namespac...原创 2021-03-23 09:05:17 · 2205 阅读 · 0 评论 -
C++类上使用属性(__declspec property)
原始代码如下:class : A{private: int m_nIndex;public: int getIndex() { return m_nIndex; } void setIndex(int value) { m_nIndex = value; }}如果采用属性方式实现,则可以修改代码如下:class : A{public: __declspec(pro.原创 2020-07-31 23:10:41 · 554 阅读 · 0 评论 -
C++ 标准库中数据类型转换
头文件引用:<sstream><sstream>库定义了三种类:istringstream:处理流的输入ostringstream:处理流的输出stringstream:处理流的输入输出简单起见,这里主要以stringstream为中心进行简单描述:例1:string转intstringstream stream;strings...原创 2020-03-20 09:36:04 · 384 阅读 · 0 评论 -
GPAC MP4文件写入(支持H264、H265)
1、GPAC模块下载链接https://github.com/gpac/gpac或https://gpac.wp.imt.fr/downloads/2、编译指导https://github.com/gpac/gpac/wiki/Build-IntroductionWindows:https://github.com/gpac/gpac/wiki/GPAC-Build-Guide-for-W...转载 2020-02-10 18:20:17 · 2642 阅读 · 2 评论 -
C++ 正则表达式regex(三)
表达式 匹配 表达式 匹配 /^\s*$/ 匹配空行。 /\d{2}-\d{5}/ 验证由两位数字、一个连字符再加 5 位数字组成的 ID 号。 /<\s*(\S+)(\s[^>]*)?>[\s\S]*<\s*\/\1\s*>/...原创 2020-01-28 23:16:02 · 402 阅读 · 0 评论 -
C++ 正则表达式regex(四)
1 转义字符在讲具体方法之前,我们先了解下C++中使用正则表达式需要注意的一个问题:转义字符cout << regex_match("123", regex("\d+")) << endl; //结果为0,需要转义字符'\'cout << regex_match("123", regex("\\d+")) << endl; /...原创 2020-01-28 23:16:52 · 774 阅读 · 0 评论 -
C++ 正则表达式regex(二)
正则匹配、查找与替代书写好模式字符串后,需要将待匹配的字符串和模式字符串进行一定规则的匹配。包括三种方式:匹配(regex_match)、查找(regex_search)、替换(regex_replace)。匹配很简单,直接将待匹配字符串和模式字符串传入到regex_match中,返回一个bool量来指明待匹配的字符串是否满足模式字符串的规则。匹配整个str字符串。...原创 2020-01-28 22:47:37 · 261 阅读 · 0 评论 -
C++ 正则表达式regex(一)
匹配字符串的基本规则1. 匹配固定的字符串regex e("abc");2. 匹配固定字符串,不区分大小写regex e("abc", regex_constants::icase);3. 匹配固定字符串之外多一个字符,不区分大小写regex e("abc.", regex_constants::icase); // . Any character...原创 2020-01-28 22:47:27 · 1272 阅读 · 0 评论 -
VC++ 数组模板类
头文件声明(CSWArray.h)#ifndef ARRAY_HEAD_FILE#define ARRAY_HEAD_FILE#pragma once//数组模板类template <class TYPE, class ARG_TYPE=const TYPE &> class CSWArray{ //变量定义protected: TYPE * ...原创 2020-01-13 17:23:54 · 518 阅读 · 0 评论 -
C++类结构规范定义
后期私有类肯定还会有很多,为了自己和读者方便阅读,在后面的设计中将严格按照制定格式来定义类的变量和函数:#pragma onceclass CClassxxx: public CClassBase{ DECLARE_DYNAMIC(CClassxxx) // 成员私有结构定义 // 构造/析构函数public: CClassxx...原创 2020-01-12 09:31:28 · 715 阅读 · 0 评论 -
VC++ 控制台程序常用接口
1、申请一个控制台窗口,如果程序本身是控制台程序,可以不用调用AllocConsole()2、获取控制台屏幕缓冲区的句柄HANDLE m_hConsole = GetStdHandle(STD_OUTPUT_HANDLE);3、设置控制台标题SetConsoleTitle(_T("控制台标题"));4、获取控制台标题char szConsoleTitle[...原创 2020-01-04 09:08:56 · 518 阅读 · 0 评论 -
C++ 标准库
C++ 标准库可以分为两部分:标准函数库:这个库是由通用的、独立的、不属于任何类的函数组成的。函数库继承自 C 语言。 面向对象类库:这个库是类及其相关函数的集合。C++ 标准库包含了所有的 C 标准库,为了支持类型安全,做了一定的添加和修改。标准函数库标准函数库分为以下几类:输入/输出 I/O 字符串和字符处理 数学 时间、日期和本地化 动态分配 其他 宽字符...转载 2019-12-24 15:05:48 · 124 阅读 · 0 评论 -
C++ STL 教程
在前面的章节中,我们已经学习了 C++ 模板的概念。C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。C++ 标准模板库的核心包括以下三个组件:组件 描述 容器(Containers) 容器是用来管理某一类对象的集合。C++ 提供了各种不同类型的容器,比如 ...转载 2019-12-24 15:04:43 · 174 阅读 · 0 评论 -
C++ Web 编程
什么是 CGI?公共网关接口(CGI),是一套标准,定义了信息是如何在 Web 服务器和客户端脚本之间进行交换的。 CGI 规范目前是由 NCSA 维护的,NCSA 定义 CGI 如下: 公共网关接口(CGI),是一种用于外部网关程序与信息服务器(如 HTTP 服务器)对接的接口标准。 目前的版本是 CGI/1.1,CGI/1.2 版本正在推进中。Web 浏览为了更好地了解 CGI...转载 2019-12-23 09:28:37 · 164 阅读 · 0 评论 -
C++ 多线程
多线程是多任务处理的一种特殊形式,多任务处理允许让电脑同时运行两个或两个以上的程序。一般情况下,两种类型的多任务处理:基于进程和基于线程。基于进程的多任务处理是程序的并发执行。 基于线程的多任务处理是同一程序的片段的并发执行。多线程程序包含可以同时运行的两个或多个部分。这样的程序中的每个部分称为一个线程,每个线程定义了一个单独的执行路径。本教程假设您使用的是 Linux 操作系统,我们...转载 2019-12-22 22:25:57 · 148 阅读 · 0 评论 -
C++ 信号处理
信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 Ctrl+C 产生中断。有些信号不能被程序捕获,但是下表所列信号可以在程序中捕获,并可以基于信号采取适当的动作。这些信号是定义在 C++ 头文件 <csignal> 中。信号 描述 SIGABRT 程序的异常终止,如调用abo...转载 2019-12-22 22:23:35 · 236 阅读 · 0 评论 -
C++ 模板
模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。每个容器都有一个单一的定义,比如向量,我们可以定义许多不同类型的向量,比如vector <int>或vector <string>。您可以使用模板来定义函数和类,接下来让我们一起...转载 2019-12-22 22:19:10 · 113 阅读 · 0 评论 -
C++ 命名空间
假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。同样的情况也出现在 C++ 应用程序中。例如,您可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。这样,编译器就无法判断您所使用的是哪一个 xyz() 函数。因此,引入了命名空间这个概...转载 2019-12-22 22:17:34 · 98 阅读 · 0 评论 -
C++ 动态内存
了解动态内存在 C++ 中是如何工作的是成为一名合格的 C++ 程序员必不可少的。C++ 程序中的内存分为两个部分:栈:在函数内部声明的所有变量都将占用栈内存。 堆:这是程序中未使用的内存,在程序运行时可用于动态分配内存。很多时候,您无法提前预知需要多少内存来存储某个定义变量中的特定信息,所需内存的大小需要在运行时才能确定。在 C++ 中,您可以使用特殊的运算符为给定类型的变量在运行时...转载 2019-12-22 22:14:29 · 153 阅读 · 0 评论 -
C++ 异常处理
异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw。throw:当问题出现时,程序会抛出一个异常。这是通过使用throw关键字来完成的。 catch:在您想要处理问题的地方,通过异常处理程序捕获异常。catch关键字用于捕获异常。...转载 2019-12-22 22:10:41 · 137 阅读 · 0 评论 -
C++ 接口(抽象类)
接口描述了类的行为和功能,而不需要完成类的特定实现。C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所示:class Box{ public: // 纯虚函数 virtual d...转载 2019-12-22 22:06:57 · 105 阅读 · 0 评论 -
C++ 数据封装
所有的 C++ 程序都有以下两个基本要素:程序语句(代码):这是程序中执行动作的部分,它们被称为函数。 程序数据:数据是程序的信息,会受到程序函数的影响。封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数据封装引申出了另一个重要的 OOP 概念,即数据隐藏。数据封装是一种把数据和操作数据的函数捆绑在一起的机制,数据抽象是...转载 2019-12-22 22:05:01 · 184 阅读 · 0 评论 -
C++ 数据抽象
数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。数据抽象是一种依赖于接口和实现分离的编程(设计)技术。让我们举一个现实生活中的真实例子,比如一台电视机,您可以打开和关闭、切换频道、调整音量、添加外部组件(如喇叭、录像机、DVD 播放器),但是您不知道它的内部实现细节,也就是说,您并不知道它是如何通过缆线接收信号,如何转换信号,并最终显示在屏幕上。...转载 2019-12-21 23:08:50 · 173 阅读 · 0 评论 -
C++ 多态
多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。下面的实例中,基类 Shape 被派生为两个类,如下所示:实例#include <iostream> using namespace std; class Shape { protect...转载 2019-12-21 23:07:32 · 82 阅读 · 0 评论 -
C++ 继承
面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。继承代表了is a关系。例如,哺乳动物是动物,狗是哺乳动物,因此,狗是动物...转载 2019-12-21 23:04:33 · 67 阅读 · 0 评论 -
C++ 类 & 对象
C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。C++ 类定义定义一个类,本质上是定义一个数据类型的蓝图。这实际上并没有定义任何数据,但它定义了类的名称意味着什么,也就是说,它定义了类...转载 2019-12-21 23:02:05 · 124 阅读 · 0 评论 -
C++ 基本的输入输出
C++ 标准库提供了一组丰富的输入/输出功能,我们将在后续的章节进行介绍。本章将讨论 C++ 编程中最基本和最常见的 I/O 操作。C++ 的 I/O 发生在流中,流是字节序列。如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。I/O 库头文件下列的头文件在 C++ 编程...转载 2019-12-21 22:56:58 · 163 阅读 · 0 评论 -
C++ 日期 & 时间
C++ 标准库没有提供所谓的日期类型。C++ 继承了 C 语言用于日期和时间操作的结构和函数。为了使用日期和时间相关的函数和结构,需要在 C++ 程序中引用 <ctime> 头文件。有四个与时间相关的类型:clock_t、time_t、size_t和tm。类型 clock_t、size_t 和 time_t 能够把系统时间和日期表示为某种整数。结构类型tm把日期和时间以...转载 2019-12-21 22:54:40 · 271 阅读 · 0 评论 -
C++ 引用
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。C++ 引用 vs 指针引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。 引用必须在创建时被初始化。指针可以在任何时...转载 2019-12-21 22:53:01 · 80 阅读 · 0 评论 -
C++ 指针
学习 C++ 的指针既简单又有趣。通过指针,可以简化一些 C++ 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C++ 程序员,学习指针是很有必要的。正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:实例#in...转载 2019-12-21 22:50:02 · 78 阅读 · 0 评论 -
C++ 字符串
C++ 提供了以下两种类型的字符串表示形式:C 风格字符串 C++ 引入的 string 类类型C 风格字符串C风格的字符串起源于 C语言,并在 C++ 中继续得到支持。字符串实际上是使用null字符 '\0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。下面的声明和初始化创建了一个 "Hello" 字符串。由于在数组的末尾存储了空字符...转载 2019-12-20 23:45:34 · 1096 阅读 · 0 评论 -
C++ 数组
C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 numbers[0]、numbers[1]、...、numbers[99] 来代表一个个单独的变量。数...转载 2019-12-20 23:45:52 · 248 阅读 · 0 评论 -
C++ 数字
通常,当我们需要用到数字时,我们会使用原始的数据类型,如 int、short、long、float 和 double 等等。这些用于数字的数据类型,其可能的值和数值范围,我们已经在 C++ 数据类型一章中讨论过。C++ 定义数字我们已经在之前章节的各种实例中定义过数字。下面是一个 C++ 中定义各种类型数字的综合实例:#include <iostream>using n...转载 2019-12-19 21:12:00 · 170 阅读 · 0 评论 -
C++ 函数
函数是一组一起执行一个任务的语句。每个 C++ 程序都至少有一个函数,即主函数main(),所有简单的程序都可以定义其他额外的函数。您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。C++ 标准库提供了大量的程序可以调用的...转载 2019-12-19 21:09:20 · 232 阅读 · 0 评论 -
C++ 判断
判断结构要求程序员指定一个或多个要评估或测试的条件,以及条件为真时要执行的语句(必需的)和条件为假时要执行的语句(可选的)。下面是大多数编程语言中典型的判断结构的一般形式:判断语句C++ 编程语言提供了以下类型的判断语句。点击链接查看每个语句的细节。语句 描述 if 语句 一个if 语句由一个布尔表达式后跟一个或多个语句组成。 if...else 语句...转载 2019-12-19 21:04:36 · 225 阅读 · 0 评论