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 ...
随机推荐
- asterisk PBX 对接中国移动IMS
前提: 最近有项目需求,需要对接移动的IMS,移动的对接同事给出了信息: 用户名:+86750735xxxx@ims.gd.chinamobile.com 密码:123456 (系统导入的号码,默认 ...
- 地图_SDK
不仅仅是Google,您必须知道的全球十大地图API https://blog.csdn.net/u013068887/article/details/79322096
- Jira + confluence
Jira入门教程 敏捷开发管理(一) https://www.jianshu.com/p/145b5c33f7d0 https://www.jianshu.com/p/975385878cde JIR ...
- ios 常见性能优化
1. 用ARC管理内存 2. 在正确的地方使用reuseIdentifier 3. 尽可能使Views透明 4. 避免庞大的XIB 5. 不要block主线程 6. 在Image Views中调整图片 ...
- My Github Repository
最近在Github上整了个Repository来保存打过的比赛的代码,包括Codeforces,Google Code Jam和Google Kick Start等,之后应该也会搞一点刷题的代码. 之 ...
- robotframework自动化测试框架搭建及问题汇总
1.安装python RF框架是基于python 的,所以一定要有python环境,python与rf存在兼容性问题,我安装的是python3.7.5,robotframework3.1.2. 选择添 ...
- Jmeter 断言-检查点
1. http请求/添加/断言/响应断言 2. 输入一个返回数据里没有的参数 3.果然报错了 断言的作用是用来查看接口文档里是否有自己想要的数据!
- 最详细不过的CUDA的下载安装使用、环境变量配置,有这一篇就够了
在上一期中,我们介绍了为什么使用GPU可以加速计算和处理图像,以及查看自己的电脑能否使用GPU加速,不知道的可以去看上一期文章,这期我们正式的来下载与安装GPU加速工具CUDA,并检查是否安装成功. ...
- 为商务办公赋能,TOM商务邮箱,塑造职场新形象
转眼已至2020年,互联网的这10年发生了翻天覆地的改变.短视频红利崛起.人脸识别支付.AI智能机器人对话...很多产品从默默无闻到一夜崛起.而对于商务邮箱领域,邮箱已成为一种习惯,却往往忽略了它的点 ...
- seajs1.3.0源码解析之module依赖有序加载
/** * The core of loader */ ;(function(seajs, util, config) { // 模块缓存 var cachedModules = {} // 接口修改 ...