21xrx.com
2024-12-22 19:04:36 Sunday
登录
文章检索 我的文章 写文章
C++时间输入输出实现
2023-06-30 13:25:28 深夜i     --     --
C++ 时间 输入 输出 实现

在C++编程中,时间输入输出是一个常见的需求。我们经常需要在代码中进行时间的处理,比如时间的计算、时间的比较等等。在这篇文章中,我们会介绍如何在C++中实现时间的输入、输出和处理。

1. 时间的表示

在C++中,时间可以用以下三种方式进行表示:

1) time_t类型:time_t是C/C++中表示时间的基本类型,它是一个整型数,表示从1970年1月1日0时0分0秒到当前时间的秒数。

2) struct tm类型:struct tm是C/C++中专门用来表示时间的结构体类型,它包含了年、月、日、时、分、秒等多个成员变量。

3) std::chrono::time_point类型:这是C++11中引入的时间类型,它是一个模板类,支持高精度的时间测量。

2. 时间的输入输出

在C++中,可以使用标准输入输出流来实现时间的输入输出。具体来说,我们可以使用如下的格式化字符串来控制时间的输出:

%Y:年份,比如2022;

%m:月份,比如04;

%d:日期,比如08;

%H:小时,比如15;

%M:分钟,比如30;

%S:秒钟,比如45。

下面是一个输出当前时间的例子:

#include

#include

int main()

{

  // 获取当前时间

  std::time_t t = std::time(nullptr);

  std::tm tm = *std::localtime(&t);

  // 输出当前时间

  std::cout << "Current date and time: ";

  std::cout << std::put_time(&tm, "%Y-%m-%d %H:%M:%S") << std::endl;

  return 0;

}

输出结果:

Current date and time: 2022-04-08 15:30:45

除了标准输出流,还可以使用std::istringstream和std::ostringstream来实现字符串型和字符型的时间输入输出。同样,我们可以使用格式化字符串来实现时间的解析和格式化操作。以std::istringstream为例,以下是一个将时间字符串转换为time_t类型的例子:

#include

#include

#include

int main()

{

  // 时间字符串

  std::string str_time = "2022-04-08 15:30:45";

  // 将字符串转换为time_t类型

  std::tm tm = {};

  std::istringstream ss(str_time);

  ss >> std::get_time(&tm, "%Y-%m-%d %H:%M:%S");

  std::time_t t = std::mktime(&tm);

  // 输出time_t类型的时间

  std::cout << "Time in seconds since 1970.1.1: " << t << std::endl;

  return 0;

}

输出结果:

Time in seconds since 1970.1.1: 1649476245

3. 时间的运算

C++中,可以使用标准库中的time相关函数来进行时间的加减、比较操作。以下是一些常用的时间函数:

time_t time(time_t *time_ptr):返回当前时间的time_t类型,如果time_ptr不为null,则也会把返回值存入time_ptr中。

struct tm *localtime(const time_t *time_ptr):返回time_t表示的时间的tm类型,表示本地时间。

char *asctime(const struct tm *time_ptr):将tm类型的时间转换为字符串类型,并返回字符串类型指针。

time_t mktime(struct tm *time_ptr):将tm类型的本地时间转换为time_t类型。

其中涉及到两种类型的运算,分别是time_t类型的时间加减和tm类型的时间加减。time_t的时间加减直接通过加减法进行操作即可。而tm类型的时间加减则通常使用mktime和localtime两个函数进行操作,下面是一个tm类型时间加减的例子:

#include

#include

int main()

{

  // 当前时间加30分钟

  std::time_t t = std::time(nullptr) + 30 * 60;

  std::tm tm = *std::localtime(&t);

  // 输出修改后的时间

  std::cout << "Time after 30 mins: ";

  std::cout << std::put_time(&tm, "%Y-%m-%d %H:%M:%S") << std::endl;

  return 0;

}

输出结果:

Time after 30 mins: 2022-04-08 16:00:45

4. 总结

本篇文章介绍了C++时间输入输出和运算方面的一些常用操作。我们可以使用标准库中的time_t类型、struct tm类型、std::chrono::time_point类型来表示时间,还可以使用标准输凝结果stream来控制时间的输入输出。同时,我们还可以使用time库中的函数来进行时间的加减、比较操作。掌握这些知识可以有效提高我们在C++编程中处理时间的效率和精度。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复