笨蛋学C++【C++基础第四弹】

C++基础第四弹

    • 11.C++日期&时间
    • 12.C++基本的输入输出
      • 12.1I/O库头文件
      • 12.2标准输出流(cout)
      • 12.3标准输入流(cin)
      • 12.4标准错误流(cerr)
      • 12.5标准日志流(clog)
    • 13.C++结构体
      • 13.1访问结构体成员
      • 13.2结构体作为函数参数
      • 13.3指向结构的指针
      • 13.4typedef关键字
    • 14.C++Vector容器
      • 14.1基本特性
      • 14.2使用场景
      • 14.3创建Vector
      • 14.4添加元素

11.C++日期&时间

  • C++ 继承了 C 语言用于日期和时间操作的结构和函数

  • 需要在 C++ 程序中引用 头文件

    struct tm {int tm_sec;   // 秒,正常范围从 0 到 59,但允许至 61int tm_min;   // 分,范围从 0 到 59int tm_hour;  // 小时,范围从 0 到 23int tm_mday;  // 一月中的第几天,范围从 1 到 31int tm_mon;   // 月,范围从 0 到 11int tm_year;  // 自 1900 年起的年数int tm_wday;  // 一周中的第几天,范围从 0 到 6,从星期日算起int tm_yday;  // 一年中的第几天,范围从 0 到 365,从 1 月 1 日算起int tm_isdst; // 夏令时
    };
    
序号函数 & 描述
1time_t time(time_t *time); 该函数返回系统的当前日历时间,自 1970 年 1 月 1 日以来经过的秒数。如果系统没有时间,则返回 -1。
2**char *ctime(const time_t *time);**该返回一个表示当地时间的字符串指针,字符串形式 day month year hours:minutes:seconds year\n\0
3struct tm *localtime(const time_t *time); 该函数返回一个指向表示本地时间的 tm 结构的指针。
4clock_t clock(void); 该函数返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。如果时间不可用,则返回 -1。
5char * asctime ( const struct tm * time ); 该函数返回一个指向字符串的指针,字符串包含了 time 所指向结构中存储的信息,返回形式为:day month date hours:minutes:seconds year\n\0。
6**struct tm *gmtime(const time_t *time);**该函数返回一个指向 time 的指针,time 为 tm 结构,用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。
7time_t mktime(struct tm *time); 该函数返回日历时间,相当于 time 所指向结构中存储的时间。
8double difftime ( time_t time2, time_t time1 ); 该函数返回 time1 和 time2 之间相差的秒数。
9**size_t strftime();**该函数可用于格式化日期和时间为指定的格式。
//
// Created by 16690 on 2024/4/19.
//#include <iostream>
#include <ctime>
using namespace std;int main(void){//基于当前系统的当前日期/时间time_t now = time(0);//把now转为字符串形式char * dt = ctime(&now);cout << "本地日期和时间:" << dt << endl;//把now转为 tm 结构tm *gmtm = gmtime(&now);dt = asctime(gmtm);cout << "UTC 日期和时间:" << dt << endl;return 0;
}
  • 使用结构tm格式化时间

    //
    // Created by 16690 on 2024/4/19.
    //#include <iostream>
    #include <ctime>using namespace std;int main(void) {//基于当前系统的当前日期/时间time_t now = time(0);//把now转为字符串形式char *dt = ctime(&now);cout << "本地日期和时间:" << dt << endl;//把now转为 tm 结构tm *gmtm = gmtime(&now);dt = asctime(gmtm);cout << "UTC 日期和时间:" << dt << endl;cout << "1970 年以来的秒数:" << now << endl;tm *ltm = localtime(&now);cout << "年:" << 1900 + ltm->tm_year << endl;cout << "月:" << 1+ltm->tm_mon << endl;cout << "日:" << ltm->tm_mday << endl;cout << "时:" << ltm->tm_hour << endl;cout << "分:" << ltm->tm_min << endl;cout << "秒:" << ltm->tm_sec << endl;//格式化时间,存放时间字符串char tmp[64];strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S", ltm);cout << "当前时间:" << tmp << endl;return 0;
    }

12.C++基本的输入输出

12.1I/O库头文件

头文件函数和描述
该文件定义了 cin、cout、cerrclog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。
该文件通过所谓的参数化的流操纵器(比如 setwsetprecision),来声明对执行标准化 I/O 有用的服务。
该文件为用户控制的文件处理声明服务。

12.2标准输出流(cout)

#include <iostream>using namespace std;int main( )
{char str[] = "Hello C++";cout << "Value of str is : " << str << endl;
}

12.3标准输入流(cin)

#include <iostream>using namespace std;int main( )
{char name[50];cout << "请输入您的名称: ";cin >> name;cout << "您的名称是: " << name << endl;}

12.4标准错误流(cerr)

#include <iostream>using namespace std;int main( )
{char str[] = "Unable to read....";cerr << "Error message : " << str << endl;
}

12.5标准日志流(clog)

#include <iostream>using namespace std;int main( )
{char str[] = "Unable to read....";clog << "Error message : " << str << endl;
}

13.C++结构体

  • C/C++数组允许定义可存储相同类型数据项的变量

  • C++结构体允许自定义可存储的不同类型数据项的变量

  • 语法:

    struct 结构体类型名{数据类型 变量名;数据类型 变量名;数据类型 变量名;
    } 结构体名;
    

13.1访问结构体成员

  • 使用成员访问运算符 . 来访问结构体成员
//
// Created by 16690 on 2024/4/19.
//
#include <iostream>
#include <cstring>using namespace std;struct Books {char title[50];char author[50];char subject[100];int book_id;
} books;int main(void) {//定义结构体类型Books的变量books1Books books1;//定义结构体类型Books的变量books2Books books2;//books1 详述strcpy(books1.title,"C++编程");strcpy(books1.author, "C++");strcpy(books1.subject,"编程语言");books1.book_id=12345;//books2 详述strcpy(books2.title,"Java编程");strcpy(books2.author, "Java");strcpy(books2.subject,"编程语言");books2.book_id=12346;//输出books1信息cout << "书1ID : " << books1.book_id << endl;cout << "书1标题 : " << books1.title << endl;cout << "书1作者 : " << books1.author << endl;cout << "书1类目 : " << books1.subject << endl;//输出books2信息cout << "书2ID : " << books2.book_id << endl;cout << "书2标题 : " << books2.title << endl;cout << "书2作者 : " << books2.author << endl;cout << "书2类目 : " << books2.subject << endl;return 0;
}

13.2结构体作为函数参数

//
// Created by 16690 on 2024/4/19.
//
#include <iostream>
#include <cstring>using namespace std;struct Books {char title[50];char author[50];char subject[100];int book_id;
} books;void printInfo(struct Books book, int num);int main(void) {//定义结构体类型Books的变量books1Books books1;//定义结构体类型Books的变量books2Books books2;//books1 详述strcpy(books1.title, "C++编程");strcpy(books1.author, "C++");strcpy(books1.subject, "编程语言");books1.book_id = 12345;//books2 详述strcpy(books2.title, "Java编程");strcpy(books2.author, "Java");strcpy(books2.subject, "编程语言");books2.book_id = 12346;cout << "-------------------------" << endl;//使用 . 运算符//输出books1信息printInfo(books1, 1);//输出books2信息printInfo(books2, 2);return 0;
}void printInfo(struct Books books, int id) {cout << "书-" << id << "-ID : " << books.book_id << endl;cout << "书-" << id << "-标题 : " << books.title << endl;cout << "书-" << id << "-作者 : " << books.author << endl;cout << "书-" << id << "-类目 : " << books.subject << endl;
}

13.3指向结构的指针

  • 可以定义指向结构的指针,方式与定义指向其他类型

    struct 结构体类型名  * 结构体指针名;结构体指针名 = &结构体名;结构体指针名 -> 结构体属性;
    
  • 访问结构的成员时使用点运算符,而通过指针访问结构的成员时,则使用箭头运算符。

  • 结构体定义的是一个实体,那么这个实体要引用结构体成员,就用 . 操作符,

  • 如果用结构体定义的是一个结构体指针,那么要引用结构体成员就用 ->操作符

    //
    // Created by 16690 on 2024/4/19.
    //
    #include <iostream>
    #include <cstring>
    using namespace std;struct Books {char title[50];char author[50];char subject[100];int book_id;
    };void printInfo(struct Books *books, int id);
    int main(void){//定义结构体类型Books的变量books1Books books1;//定义结构体类型Books的变量books2Books books2;//books1 详述strcpy(books1.title, "C++编程");strcpy(books1.author, "C++");strcpy(books1.subject, "编程语言");books1.book_id = 12345;//books2 详述strcpy(books2.title, "Java编程");strcpy(books2.author, "Java");strcpy(books2.subject, "编程语言");books2.book_id = 12346;//使用 -> 运算符printInfo(&books1,1);printInfo(&books2,2);return 0;
    }void printInfo(struct Books *books, int id) {cout << "书-" << id << "-ID : " << books->book_id << endl;cout << "书-" << id << "-标题 : " << books->title << endl;cout << "书-" << id << "-作者 : " << books->author << endl;cout << "书-" << id << "-类目 : " << books->subject << endl;
    }
    

13.4typedef关键字

  • 给创建的类型取一个别名,然后使用typedef 来定义对应的结构体类型

    struct Books {char title[50];char author[50];char subject[100];int book_id;
    } books;Books books1,books2;
    
  • typedef来定义非结构类型

    typedef long int *pint32;
    pint32 x, y, z;
    

14.C++Vector容器

  • C++ 中的 vector 是一种序列容器,允许在运行时动态地插入和删除元素
  • vector 是基于数组的数据结构,但它可以自动管理内存,这意味着不需要手动分配和释放内存

14.1基本特性

  • 动态大小vector 的大小可以根据需要自动增长和缩小。
  • 连续存储vector 中的元素在内存中是连续存储的,这使得访问元素非常快速。
  • 可迭代vector 可以被迭代,你可以使用循环(如 for 循环)来访问它的元素。
  • 元素类型vector 可以存储任何类型的元素,包括内置类型、对象、指针等。

14.2使用场景

  • 当需要一个可以动态增长和缩小的数组时。
  • 当需要频繁地在序列的末尾添加或移除元素时。
  • 当需要一个可以高效随机访问元素的容器时。

14.3创建Vector

  • 包含头文件

    //
    // Created by 16690 on 2024/4/19.
    //
    #include <iostream>
    #include <vector>using namespace std;
    int main(void){//创建vector容器//如果没有使用命名空间 需要使用std::vector<int>vector<int> myVector1;//创建vector容器并初始化// 创建一个包含 5 个整数的 vector,每个值都为默认值(0)vector<int> myVector2(5);// 创建一个包含 5 个整数的 vector,每个值都为 10vector<int> myVector4(5,10);// 初始化一个包含元素的 vectorvector<int> myVector5={1,2,3,4,5};return 0;
    }
    

14.4添加元素

//
// Created by 16690 on 2024/4/19.
//
#include <iostream>
#include <vector>using namespace std;int main(void) {//创建vector容器//如果没有使用命名空间 需要使用std::vector<int>vector<int> myVector1;//创建vector容器并初始化// 创建一个包含 5 个整数的 vector,每个值都为默认值(0)vector<int> myVector2(5);// 创建一个包含 5 个整数的 vector,每个值都为 10vector<int> myVector4(5, 10);// 初始化一个包含元素的 vectorvector<int> myVector5 = {1, 2, 3, 4, 5};//添加元素//使用 push_back 方法向 vector 中添加元素,添加到末尾myVector5.push_back(6);//访问元素//使用下标操作符 [] 或 at() 方法访问 vector 中的元素:int x = myVector5[0];int y = myVector5.at(0);cout << "myVector5[0]=" << x << endl;cout << "myVector5.at(0)=" << y << endl;//获取大小//使用 size() 方法获取 vector 中元素的数量int size = myVector5.size();//迭代访问1for (auto it = myVector5.begin(); it != myVector5.end(); it++) {cout << *it << endl;}//迭代访问2cout << "-------------------" << endl;for (const auto &item: myVector5) {cout << item << endl;}//迭代访问3cout << "-------------------" << endl;for (int element: myVector5) {cout << element << "\t" << endl;}//删除元素myVector5.erase(myVector5.begin() + 2);//清空元素myVector5.clear();cout << "myVector5.size=" << myVector5.size() << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/1855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

防水游泳耳机有哪些?热推榜4大精品游泳耳机,绝不失望!

随着科技的发展和人们对生活品质追求的提高&#xff0c;防水游泳耳机已经成为许多游泳爱好者的必备装备。它们不仅能够在水下提供清晰的音质&#xff0c;还能保证使用者的安全&#xff0c;避免因长时间水下活动而对耳朵造成损伤。然而&#xff0c;面对市场上琳琅满目的产品&…

HarmonyOS ArkUI实战开发-NAPI数据类型

在前两篇文章里笔者简单介绍了 NAPI 工程结构以及生成的 cpp 源码部分&#xff0c;其中 JS 应用层传递过来的数据被封装在了 napi_value 中&#xff0c;使用前先要转换成对应的 C/C 数据类型&#xff0c;C/C 端的数据也要转换成 napi_value 数据类型传递给 JS 应用层&#xff0…

小公司如何实现全员经营?

小公司如何实现全员经营&#xff1f;这是一个值得深入探讨的问题。全员经营不仅意味着每个员工都要参与到公司的经营活动中&#xff0c;还需要他们拥有对公司的责任感和使命感&#xff0c;以实现公司的整体目标。对于小公司而言&#xff0c;实现全员经营更是一个挑战&#xff0…

数字化革新:可视化墨水屏引领基板工艺MSAP贴膜阶段迈向无纸化高端制造应用背景

随着科技的飞速发展和环境保护意识的日益增强&#xff0c;制造印刷电路板&#xff08;PCB&#xff09;行业正面临着提升生产效率、降低资源消耗和推动绿色制造的迫切需求。 问题&#xff1a; PCB生产过程对洁净度要求高&#xff0c;传统打印的纸张会有粉尘&#xff0c;纸屑&am…

使用【node】创建本地接口

在前端开发的过程中&#xff0c;接口相关的信息一般是由后端处理好返回给前端&#xff0c;但是有时候后端不在的时候想自己写个接口进行测试是非常麻烦的。 node是前端一个不错的写接口工具 一 初始化文件 1 在新建一个空的文件夹node 进入空文件夹在&#xff0c;文件夹的地…

社会工程渗透测试教程(二)

原文&#xff1a;annas-archive.org/md5/db987a87e1478b8a8617c263c631b477 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 第六章&#xff1a;通过有效的威胁建模确保价值 Richard Ackroyd&#xff0c;随机风暴有限公司高级安全工程师 大多数客户意识到他们需要社会…

第25天:安全开发-PHP应用文件管理包含写入删除下载上传遍历安全

第二十五天 一、PHP文件管理-下载&删除功能实现 1.文件上传&#xff1a; 无过滤机制黑名单过滤机制白名单过滤机制文件类型过滤机制 2.文件删除&#xff1a; unlink() 文件删除函数调用命令删除&#xff1a;system shell_exec exec等 3. 文件下载&#xff1a; 修改HT…

咱们来唠唠2024年参加三下乡社会实践活动怎样联系媒体投稿?

作为一名在校大学生,我深深珍视每一次增长见识、锻炼能力的机会,每年寒暑假期间,我都积极参与学院的“三下乡”社会实践活动。这不仅是我贴近生活、体验基层的大好时机,更是我积累人生经验、拓宽视野的重要途径。每次活动结束后,按照学院的要求,我们需要将实践纪实整理成文,向各…

WebRTC直播间搭建记录

考虑到后续增加平台直播的可能性&#xff0c;笔记记录一下WebRTC相关. 让我们分别分析两种情况下的WebRTC连接建立过程&#xff1a; 情况一&#xff1a;AB之间可以直接通信 1.信令交换&#xff1a; 设备A和设备B首先通过信令服务器交换SDP&#xff08;Session Description Pr…

python国内的镜像源记录

清华大学&#xff08;推荐&#xff09;&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple 豆瓣&#xff08;推荐&#xff09;&#xff1a;http://pypi.douban.com/simple 阿里云&#xff1a;http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.m…

【S32K3 MCAL配置】-7.1-GPT Driver:定时器中断-创建一个周期执行的任务

"><--返回「Autosar_MCAL高阶配置」专栏主页--> 案例背景:常用于周期点亮/关闭一个LED灯;或者精度一般的占空比为50% PWM方波;或者周期调用一个函数,在该函数中我们可以执行一些软件策略(简易的OS)。 目录(共15页精讲,基于评估板: NXP S32K312EVB-Q172,…

就业班 第三阶段(nginx) 2401--4.22 day1 nginx1 http+nginx初识+配置+虚拟主机

一、HTTP 介绍 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;的缩写,是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据&#xff08;HTML 文件…

2024.4.22力扣每日一题——组合总和 Ⅳ

2024.4.22 题目来源我的题解方法一 回溯记忆化方法二 动态规划 题目来源 力扣每日一题&#xff1b;题序&#xff1a;377 我的题解 方法一 回溯记忆化 和组合总和二、三类似&#xff0c;只是需要使用记忆化记录重复的地方&#xff08;剪枝&#xff09;&#xff0c;不然时间上…

PLC_博图系列☞N=:在信号下降沿置位操作数

、 PLC_博图系列☞N&#xff1a;在信号下降沿置位操作数 文章目录 PLC_博图系列☞N&#xff1a;在信号下降沿置位操作数背景介绍N&#xff1a; 在信号下降沿置位操作数说明参数示例 关键字&#xff1a; PLC、 西门子、 博图、 Siemens 、 N 背景介绍 这是一篇关于PLC编程的…

【C语言】strstr函数刨析-----字符串查找

目录 一、strstr 函数介绍 ✨函数头文件&#xff1a; ✨函数原型&#xff1a; ✨函数解读 ✨功能演示 二、函数的原理以及模拟实现 ✨函数原理 ✨函数的模拟实现 三、strstr函数的注意事项 四、共勉 一、strstr 函数介绍 strstr函数是在一个字符串中查找另一个字符…

了解IPS和IDS:这5个差异将改变你的安全观念!

IPS 代表 入侵防御系统&#xff08;Intrusion Prevention System&#xff09;&#xff0c;它是 IDS 的进一步发展&#xff0c;不仅具备检测攻击的能力&#xff0c;还能在检测到攻击后主动采取措施阻止攻击。IPS 通常部署在防火墙和网络设备之间&#xff0c;能够深度感知并检测流…

TCP练习

#include <mystdio.h> #define PORT 8888 #define IP "192.168.124.18" int main(int argc, const char *argv[]) { //创建流式套接字文件 int sfd socket(AF_INET,SOCK_STREAM,0); if(sfd < 0) { perror("socket"); …

计算机服务器中了locked勒索病毒怎么办,locked勒索病毒解密工具流程步骤

随着网络技术的不断应用与发展&#xff0c;越来越多的企业离不开网络&#xff0c;网络大大提升了企业的办公效率水平&#xff0c;也为企业的带来快速发展&#xff0c;对于企业来说&#xff0c;网络数据安全成为了大家关心的主要话题。近日&#xff0c;云天数据恢复中心接到多家…

程序员缓解工作压力的小窍门

目录 1.概述 2.工作与休息的平衡 3.心理健康与自我关怀 4.社交与网络建设 1.概述 作为程序员&#xff0c;缓解工作压力是非常重要的。压力太大有可能会写很多bug。我们可以采取以下方法来保持高效和创新&#xff0c;同时维护个人健康和工作热情。 定时休息&#xff1a;保持…

Java | Leetcode Java题解之第38题外观数列

题目&#xff1a; 题解&#xff1a; class Solution {public String countAndSay(int n) {String[] arr {"","1","11","21","1211","111221","312211","13112221","1113213211",…