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 ...
随机推荐
- Android开发之数组类的面试题目,android工程师java程序员必备
1,定义一个长度为5的数组 int [] arr=new int[5]; 2,写出静态初始化一个数组的方法 int [] arr={1,2,3,4}; 3,写出可变参数的使用规则 1,只能做为方 ...
- iOS 64位静态链接库
https://www.jianshu.com/p/486e3b737707 https://stackoverflow.com/questions/44635297/setting-an-ios-s ...
- Mybatis入门篇之结果映射,你射准了吗?
目录 前言 什么是结果映射? 如何映射? 别名映射 驼峰映射 配置文件开启驼峰映射 配置类中开启驼峰映射 resultMap映射 总结 高级结果映射 关联(association) 例子 关联的嵌套 ...
- HDU - 6570 - Wave(暴力)
Avin is studying series. A series is called "wave" if the following conditions are satisfi ...
- 【好文分享】为什么强烈禁止开发人员使用isSuccess作为变量名
原文来自阿里云hollies:https://developer.aliyun.com/article/701413 简介: 在日常开发中,我们会经常要在类中定义布尔类型的变量,比如在给外部系统提 ...
- 05_Python的文件操作
1.文件操作概述 # 文件是用于数据存储的单位通常用来长期存储设置,文件中的数据是以字节为单位进行顺序存储的 1.打开文件: f = open("xxx") 或 with ...
- vue安装pubsub-js 库的命令
1.查看pubsub-js 库是否已经存在该库命令: npm info pubsub-js 2.若不存在,则先安装pubsub-js 库,命令如下: npm install --save pubsub ...
- Android 4.X 系统加载 so 失败的原因分析
1 so 加载过程 so 加载的过程可以参考小米的系统工程师的文章loadLibrary动态库加载过程分析 2 问题分析 2.1 问题 年前项目里新加了一个 so库,但发现native 方法的找不到的 ...
- virtualbox虚拟机之连接本地主机同时可以连接外部网络
如果主机需要通过ssh,ftp等方式访问linux虚拟机,是无法实现的.这个时候要实现端口互通,我们要用到VirtualBox的端口转发功能.所谓的端口转发功能,就是借助主机上虚拟出来的Virtual ...
- [LeetCode]621. 任务调度器(贪心)
题目 给定一个用字符数组表示的 CPU 需要执行的任务列表.其中包含使用大写的 A - Z 字母表示的26 种不同种类的任务.任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完.CP ...