赞
踩
C++ 继承了 C 语言用于日期和时间操作的结构和函数
需要在 C++ 程序中引用 头文件
struct tm {
int tm_sec; // 秒,正常范围从 0 到 59,但允许至 61
int tm_min; // 分,范围从 0 到 59
int tm_hour; // 小时,范围从 0 到 23
int tm_mday; // 一月中的第几天,范围从 1 到 31
int tm_mon; // 月,范围从 0 到 11
int tm_year; // 自 1900 年起的年数
int tm_wday; // 一周中的第几天,范围从 0 到 6,从星期日算起
int tm_yday; // 一年中的第几天,范围从 0 到 365,从 1 月 1 日算起
int tm_isdst; // 夏令时
};
序号 | 函数 & 描述 |
---|---|
1 | time_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。 |
3 | struct tm *localtime(const time_t *time); 该函数返回一个指向表示本地时间的 tm 结构的指针。 |
4 | clock_t clock(void); 该函数返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。如果时间不可用,则返回 -1。 |
5 | char * 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)表示。 |
7 | time_t mktime(struct tm *time); 该函数返回日历时间,相当于 time 所指向结构中存储的时间。 |
8 | double 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; }
头文件 | 函数和描述 |
---|---|
该文件定义了 cin、cout、cerr 和 clog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。 | |
该文件通过所谓的参数化的流操纵器(比如 setw 和 setprecision),来声明对执行标准化 I/O 有用的服务。 | |
该文件为用户控制的文件处理声明服务。 |
#include <iostream>
using namespace std;
int main( )
{
char str[] = "Hello C++";
cout << "Value of str is : " << str << endl;
}
#include <iostream>
using namespace std;
int main( )
{
char name[50];
cout << "请输入您的名称: ";
cin >> name;
cout << "您的名称是: " << name << endl;
}
#include <iostream>
using namespace std;
int main( )
{
char str[] = "Unable to read....";
cerr << "Error message : " << str << endl;
}
#include <iostream>
using namespace std;
int main( )
{
char str[] = "Unable to read....";
clog << "Error message : " << str << endl;
}
C/C++数组允许定义可存储相同类型数据项的变量
C++结构体允许自定义可存储的不同类型数据项的变量
语法:
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; } books; int main(void) { //定义结构体类型Books的变量books1 Books books1; //定义结构体类型Books的变量books2 Books 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; }
// // 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的变量books1 Books books1; //定义结构体类型Books的变量books2 Books 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; }
可以定义指向结构的指针,方式与定义指向其他类型
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的变量books1 Books books1; //定义结构体类型Books的变量books2 Books 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; }
给创建的类型取一个别名,然后使用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;
vector
的大小可以根据需要自动增长和缩小。vector
中的元素在内存中是连续存储的,这使得访问元素非常快速。vector
可以被迭代,你可以使用循环(如 for
循环)来访问它的元素。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,每个值都为 10 vector<int> myVector4(5,10); // 初始化一个包含元素的 vector vector<int> myVector5={1,2,3,4,5}; return 0; }
// // 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,每个值都为 10 vector<int> myVector4(5, 10); // 初始化一个包含元素的 vector vector<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(); //迭代访问1 for (auto it = myVector5.begin(); it != myVector5.end(); it++) { cout << *it << endl; } //迭代访问2 cout << "-------------------" << endl; for (const auto &item: myVector5) { cout << item << endl; } //迭代访问3 cout << "-------------------" << endl; for (int element: myVector5) { cout << element << "\t" << endl; } //删除元素 myVector5.erase(myVector5.begin() + 2); //清空元素 myVector5.clear(); cout << "myVector5.size=" << myVector5.size() << endl; return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。