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

ops/2024/11/10 16:59:06/

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.ppmy.cn/ops/9638.html

相关文章

腾讯云服务器,部署mysql数据库后无法远程访问?

一&#xff0c;首先确定自己部署的数据库&#xff0c;是否可以正常登录&#xff0c;验证部署是否是否成功 mysql -u root -p二、放开mysql远程访问权限&#xff0c;依次输入这些命令 create user root% identified with mysql_native_password by xxxxx; grant all privilege…

第07-4章 网络层详解

7.1 网络层协议 IP协议ARP&#xff08;地址解析协议&#xff09;RARP&#xff08;反向地址解析协议&#xff09;ICMP&#xff08;互联网控制消息协议&#xff09; 7.2 IP协议详解 7.2.1 IP协议功能 寻址和路由传递服务&#xff08;不可靠&#xff0c;尽最大努力&#xff0c…

呼市经开区建设服务项目水、电能耗监测 数采案例

一、项目背景及需求 项目地点位于内蒙古呼和浩特市&#xff0c;呼市数字经开区建设服务项目。属于企业用能数据采集、能耗监测板块子项目。 针对水、电能耗数据采集&#xff0c;结合现场客观因素制约&#xff0c;数据采集方面存在较大难度。大多数国网电表485接口由于封签限制…

LeetCode 2007.从双倍数组中还原原数组:哈希表——从nlogn到n

【LetMeFly】2007.从双倍数组中还原原数组&#xff1a;哈希表——从nlogn到n 力扣题目链接&#xff1a;https://leetcode.cn/problems/find-original-array-from-doubled-array/ 一个整数数组 original 可以转变成一个 双倍 数组 changed &#xff0c;转变方式为将 original …

Day16-Python基础学习之闭包和装饰器

闭包 # 闭包 def outer(logo):def inner(msg):print(f"<{logo}>{msg}<{logo}>")return inner ​ fn1 outer("Hello") # 类型是函数 注意这里传入的参数对于内部函数来说是持续存在的 fn1("world") ​ # 修改外部函数的值 def o…

BusyBox是何方神圣?

1.概念 BusyBox 是一个集成了300多个常用 Linux 命令&#xff08;例如&#xff1a;clear、mount、telnet、grep等&#xff09;和工具的单一可执行文件&#xff0c;常用于嵌入式 Linux 系统&#xff0c;如 Android。 它虽然很小&#xff0c;但提供了许多命令行的功能&#xff…

2024 应届校招经验分享(非互联网篇)

&#x1f4e2;&#x1f4e2;&#x1f4e2; 2024年应届毕业生&#xff0c;浙江大学计算机研究生。自23年秋招开始至今&#xff0c;博主先后拿到了互联网行业、机械制造行业、国企央企、高校体制等多家企业和单位的数十个Offer&#xff0c;了解多行业中的计算机求职方向&#xff…

展览展会媒体媒体邀约执行应该怎么做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 展览展会邀请媒体跟其他活动邀请媒体流程大致相同&#xff0c;包括 制定媒体邀约计划&#xff0c;准备新闻稿&#xff0c;发送邀请函&#xff0c;确认媒体参会&#xff0c;现场媒体接待及…