C++中头文件简介(stdio.h & chrono)
参考:
1. https://baike.baidu.com/item/stdio.h
2. https://www.cnblogs.com/jwk000/p/3560086.html
1. stdio.h :
stdio 就是指 “standard input & output"(标准输入输出)
int getchar()//从标准输入设备写入一个字符int putchar()//向标准输出设备读出一个字符int scanf(char*format[,argument…])//从标准输入设备读入格式化后的数据int printf(char*format[,argument…])//向标准输出设备输出格式化字符串char* gets(char*string)//从标准输入设备读入一个字符串int puts(char*string)//向标准输出设备输出一个字符串int sprintf(char*string,char*format[,…])//把格式化的数据写入某个字符串缓冲区所谓的详解只不过是参考www.cplusplus.com的说明整理了一下,因为没发现别人有详细讲解。
chrono是一个time library, 源于boost,现在已经是C++标准。话说今年似乎又要出新标准了,好期待啊!
要使用chrono库,需要#include<chrono>,其所有实现均在std::chrono namespace下。注意标准库里面的每个命名空间代表了一个独立的概念。所以下文中的概念均以命名空间的名字表示! chrono是一个模版库,使用简单,功能强大,只需要理解三个概念:duration、time_point、clock
1 template <class Rep, class Period = ratio<1> > class duration;
1 template <intmax_t N, intmax_t D = 1> class ratio;
1 template <class ToDuration, class Rep, class Period>
2 constexpr ToDuration duration_cast (const duration<Rep,Period>& dtn);

1 // duration constructor
2 #include <iostream>
3 #include <ratio>
4 #include <chrono>
5
6 int main ()
7 {
8 typedef std::chrono::duration<int> seconds_type;
9 typedef std::chrono::duration<int,std::milli> milliseconds_type;
10 typedef std::chrono::duration<int,std::ratio<60*60>> hours_type;
11
12 hours_type h_oneday (24); // 24h
13 seconds_type s_oneday (60*60*24); // 86400s
14 milliseconds_type ms_oneday (s_oneday); // 86400000ms
15
16 seconds_type s_onehour (60*60); // 3600s
17 //hours_type h_onehour (s_onehour); // NOT VALID (type truncates), use:
18 hours_type h_onehour (std::chrono::duration_cast<hours_type>(s_onehour));
19 milliseconds_type ms_onehour (s_onehour); // 3600000ms (ok, no type truncation)
20
21 std::cout << ms_onehour.count() << "ms in 1h" << std::endl;
22
23 return 0;
24 }
25
26 duration还有一个成员函数count()返回Rep类型的Period数量,看代码:
27
28 // duration::count
29 #include <iostream> // std::cout
30 #include <chrono> // std::chrono::seconds, std::chrono::milliseconds
31 // std::chrono::duration_cast
32
33 int main ()
34 {
35 using namespace std::chrono;
36 // std::chrono::milliseconds is an instatiation of std::chrono::duration:
37 milliseconds foo (1000); // 1 second
38 foo*=60;
39
40 std::cout << "duration (in periods): ";
41 std::cout << foo.count() << " milliseconds.\n";
42
43 std::cout << "duration (in seconds): ";
44 std::cout << foo.count() * milliseconds::period::num / milliseconds::period::den;
45 std::cout << " seconds.\n";
46
47 return 0;
48 }

1 template <class Clock, class Duration = typename Clock::duration> class time_point;

1 // time_point constructors
2 #include <iostream>
3 #include <chrono>
4 #include <ctime>
5
6 int main ()
7 {
8 using namespace std::chrono;
9
10 system_clock::time_point tp_epoch; // epoch value
11
12 time_point <system_clock,duration<int>> tp_seconds (duration<int>(1));
13
14 system_clock::time_point tp (tp_seconds);
15
16 std::cout << "1 second since system_clock epoch = ";
17 std::cout << tp.time_since_epoch().count();
18 std::cout << " system_clock periods." << std::endl;
19
20 // display time_point:
21 std::time_t tt = system_clock::to_time_t(tp);
22 std::cout << "time_point tp is: " << ctime(&tt);
23
24 return 0;
25 }
26

1 template <class ToDuration, class Clock, class Duration>
2 time_point<Clock,ToDuration> time_point_cast (const time_point<Clock,Duration>& tp);

1 / time_point_cast
2 #include <iostream>
3 #include <ratio>
4 #include <chrono>
5
6 int main ()
7 {
8 using namespace std::chrono;
9
10 typedef duration<int,std::ratio<60*60*24>> days_type;
11
12 time_point<system_clock,days_type> today = time_point_cast<days_type>(system_clock::now());
13
14 std::cout << today.time_since_epoch().count() << " days since epoch" << std::endl;
15
16 return 0;
17 }


1 // system_clock example
2 #include <iostream>
3 #include <ctime>
4 #include <ratio>
5 #include <chrono>
6
7 int main ()
8 {
9 using std::chrono::system_clock;
10
11 std::chrono::duration<int,std::ratio<60*60*24> > one_day (1);
12
13 system_clock::time_point today = system_clock::now();
14 system_clock::time_point tomorrow = today + one_day;
15
16 std::time_t tt;
17
18 tt = system_clock::to_time_t ( today );
19 std::cout << "today is: " << ctime(&tt);
20
21 tt = system_clock::to_time_t ( tomorrow );
22 std::cout << "tomorrow will be: " << ctime(&tt);
23
24 return 0;
25 }
26


1 // steady_clock example
2 #include <iostream>
3 #include <ctime>
4 #include <ratio>
5 #include <chrono>
6
7 int main ()
8 {
9 using namespace std::chrono;
10
11 steady_clock::time_point t1 = steady_clock::now();
12
13 std::cout << "printing out 1000 stars...\n";
14 for (int i=0; i<1000; ++i) std::cout << "*";
15 std::cout << std::endl;
16
17 steady_clock::time_point t2 = steady_clock::now();
18
19 duration<double> time_span = duration_cast<duration<double>>(t2 - t1);
20
21 std::cout << "It took me " << time_span.count() << " seconds.";
22 std::cout << std::endl;
23
24 return 0;
25 }
26

chrono库还有几个小特性,但是像这种工具库,本着够用则已的态度,就不求全责备了。
C++中头文件简介(stdio.h & chrono)的更多相关文章
- C头文件之<stdio.h>
(stdio.h) 该头文件主要是执行输入输出操作.文件中重要的概念是“流”(streams).“流”在函数库中用FILE表示,用指针类型FILE *来操作.有三个标准流:stdin, stdout, ...
- C++ 中头文件<bits/stdc++.h>的优缺点
在编程竞赛中,我们常见一个头文件: #include <bits/stdc++.h> 发现它是部分C++中支持的一个几乎万能的头文件,包含所有的可用到的C++库函数,如<istrea ...
- C/C++ 引入头文件时 #include<***.h> 与 #include"***.h" 区别
两种情况区分: 1.#include <> 编译器只会去系统文件目录中查找,找不到就报错. 2.#include " " 编译器会先在用户目录中查找,再到编译器设定的 ...
- C语言中头文件<stdio.h>中的#ifndef _STDIO_H_
先了解这里的相关知识:http://www.cnblogs.com/stemon/p/4000468.html 头文件的中的#ifndef,这是一个很关键的东西.比如你有两个C文件,这两个C文件都in ...
- Visual Studio中头文件stdafx.h的作用
在较新版的Visual Studio中,新生成的C++项目文件的的头文件夹下会默认有头文件stdafx.h,而源文件夹下则默认有源文件stdafx.cpp,手动将这些文件删除后,编译时系统还会报错.下 ...
- c中头文件在cpp文件里引用和.h文件引用的思考
我们在编敲代码中头文件是常常使用的. 可是头文件是应该包括在.H文件里还是在.cpp文件里.在这个其中有什么样去差别呢. 假如说我们编写了一个a.cpp .我们将a.cpp文件的变量和函数申明在a. ...
- C++ 中头文件(.h)和源文件(.cc)的写法简述
用C++编写比较大型的项目时,文件的分割管理确实确实是非常必要的 .下面就非常简洁明了地谈谈头文件(.h)和源文件(.cc)应该怎么写. 头文件(.h):写类的声明(包括类里面的成员和方法的声明).函 ...
- C++中头文件、源文件之间的区别与联系
.h头文件和.cpp文件的区别 疑惑1:.h文件能够编写main函数吗? 实验: 编写test.h文件,里面包含main函数 若直接编译g++ test.h -o test,通过file命令 file ...
- C++万能头文件<bits/stdc++.h>的内容与优缺点
最近发现了一个C++的头文件bits/stdc++.h,听说这是一个几乎包含了所有C++库函数的头文件,就想更深入的了解一下,下面是头文件内容 // C++ includes used for pre ...
随机推荐
- Java 的八种排序算法
Java 的八种排序算法 这个世界,需要遗忘的太多. 背景:工作三年,算法一问三不知. 一.八种排序算法 直接插入排序.希尔排序.简单选择排序.堆排序.冒泡排序.快速排序.归并排序和基数排序. 二.算 ...
- Shader Graph
About Shader Graph https://docs.unity3d.com/Packages/com.unity.shadergraph@7.3/manual/index.html uni ...
- Unity图文混排
http://blog.csdn.net/akof1314/article/details/49028279 http://blog.csdn.net/akof1314/article/details ...
- 分享一款知识库平台系统-wcp
入园这么些天了,今天搭建了一套知识库系统,使用效果还不错,分享一些过程经验. 搭建准备: 软件系统:WCP4.3免费版 (免费开源,支持Windows,使用简单,有傻瓜式一键安装包-win平台) 服务 ...
- 9.深入k8s:调度器及其源码分析
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 这次讲解的是k8s的调度器部分的代码,相对来说比较复杂,慢慢的梳理清 ...
- CentOS+Phpstudy安装Sqli-Labs
CentOS+Phpstudy安装Sqli-Labs 安装环境 CentOS 7.5 vmware fusion phpstudy 安装步骤 1. 下载sqli-labs 2. 将sqli-labs ...
- format的实现
var format = function(s, arg0) { var args = arguments; return s.replace(/\{(\d+)\}/ig, function(a, b ...
- os.walk模块查找目录下的所有txt文件
- Kafka 【入门一篇文章就够了】
初识 Kafka 什么是 kafka Kafka 是由 Linkedin 公司开发的,它是一个分布式的,支持多分区.多副本,基于 Zookeeper 的分布式消息流平台,它同时也是一款开源的基于发布订 ...
- Linux常用命令详解(1)
基础命令:lsmanpwdcdmkdirechotouchcpmvrmrmdircatmorelessheadtailclearpoweroffreboot进阶命令(下一章节):aliasunalia ...