C++的IO处理中的头文件以及类理解(1)
C++语言不直接处理输入输出,而是通过一簇定义在标准库中的类型来处理IO。这些类型支持从设备读取数据、向设备写入数据的IO操作,设备可以是文件、控制台窗口等,还有一些类型允许内存IO,即,从string读取数据,向string写入数据。
C++使用标准库类来处理面向流的输入和输出,主要是通过三个头文件来进行操作的
(1)、<iostream> 处理控制台IO;面向控制台IO处理。
(2)、<fstream> 处理命名文件IO;面向文件IO处理。
(3)、<sstream>完成内存string的IO。面向内存IO处理
其中:
<iostream>也自动包含了<ios>、<streambuf>、<istream>、<ostream>和<iosfwd>。
其他两个头文件放在下一个博客中介绍。
头文件<iostream>中的对象包括:
()、narrow characters(char)即窄字符:cin(standard input stream (object))、cout(standard output stream (object))、cerr(standard output stream for errors (object))、clog(standard output stream for logging (object)); ()、wide characters(wchar_t)即宽字符:wcin(standard input stream (wide) (object))、wcout(standard output stream (wide) (object))、wcerr(standard output stream for errors (wide) (object))、wclog(standard output stream for logging (wide) (object))。 __PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 istream cin, *_Ptr_cin;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 ostream cout, *_Ptr_cout;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 ostream cerr, *_Ptr_cerr;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 ostream clog, *_Ptr_clog; __PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 wistream wcin, *_Ptr_wcin;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 wostream wcout, *_Ptr_wcout;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 wostream wcerr, *_Ptr_wcerr;
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 wostream wclog, *_Ptr_wclog;
C ++ 中所有的IO头文件,以及其内的类型定义
各种类型简介:
类型:
(1)istream(输入流)类,提供输入操作;
(2)ostream(输出流)类,提供输出操作;
(3)iostream(输入输出流)类
实例:
cin,一个istream对象,标准输入流,用来从标准输入读取数据;
cout,一个ostream对象,标准输出流,从标准输出写入数据,输出可以重定向( “>” 或“1>”)到一个指定文件中;用于将数据写入标准输出,通常用于程序的正常输出内容,
cerr,一个ostream对象,标准错误流,通常用于输出程序错误信息或与其它不属于正常逻辑的输出内容,写入到标准错误,默认情况下,写到cerr的数据是不缓冲的;错误信息可以直接发送到显示器,而无需等到缓冲区或者新的换行符时,才被显示;可以通过” 2> ”方式重定向输出到指定文件中;cerr通常用于输出错误信息或其它不属于程序正常逻辑的输出内容。
clog:一个ostream对象,标准错误流,关联到标准错误;与cerr区别:cerr和clog都是标准错误流,区别在于cerr不经过缓冲区,直接向显示器输出信息,而clog中的信息默认会存放在缓冲区,缓冲区满或者遇到endl时才输出;默认情况下,写到clog的数据是被缓冲的。clog通常用于报告程序的执行信息,存入一个日志文件中。
操作:
>>运算符,用来从一个istream对象读取输入数据;
<<运算符,用来向一个ostream对象写入输出数据;
getline函数,从一个给定的istream读取一行数据,存入一个给定的string对象中。
IO库类型和头文件:iostream定义了用于读写流的基本类型,fstream定义了读写命名文件的类型,sstream定义了读写内存string对象的类型,如下图:
为了支持使用宽字符的语言,标准库定义了一组类型和对象来操纵wchar_t类型的数据。宽字符版本的类型和函数的名字以一个w开始。例如,wcin、wcout和wcerr是分别对应cin、cout和cerr的宽字符版对象。宽字符版本的类型和对象与其对应的普通char版本的类型定义在同一个头文件中。
测试程序:
#include "iostream.hpp"
#include <iostream> // reference: http://www.tutorialspoint.com/cplusplus/cpp_basic_input_output.htm
int test_iostream_cout()
{
char str[] = "Hello C++";
std::cout << "Value of str is : " << str << std::endl; return ;
} int test_iostream_cin()
{
char name[]; std::cout << "Please enter your name: ";
std::cin >> name;
std::cout << "Your name is: " << name << std::endl; return ;
} int test_iostream_clog()
{
char str[] = "Unable to read....";
std::clog << "Error message : " << str << std::endl; return ;
} int test_iostream_cerr()
{
char str[] = "Unable to read....";
std::cerr << "Error message : " << str << std::endl; return ;
} // reference: https://msdn.microsoft.com/en-us/library/6xwbdak2(v=vs.80).aspx
static void TestWide()
{
int i = ;
std::wcout << L"Enter a number: ";
std::wcin >> i;
std::wcerr << L"test for wcerr" << std::endl;
std::wclog << L"test for wclog" << std::endl;
} int test_iostream_w()
{
int i = ;
std::cout << "Enter a number: ";
std::cin >> i;
std::cerr << "test for cerr" << std::endl;
std::clog << "test for clog" << std::endl; TestWide(); return ;
}
C++的IO处理中的头文件以及类理解(1)的更多相关文章
- C++的IO处理中的头文件以及类理解(2)<sstream>头文件
C++的IO处理中的头文件以及类理解(2)<sstream>头文件 头文件<sstream>中定义的类型都继承iostream头文件中定义的类型.除了继承得来的操作,sstre ...
- Windows 驱动程序工具包中的头文件
MSDN原文:https://msdn.microsoft.com/zh-cn/library/windows/hardware/ff554695(v=vs.85).aspx Windows 驱动程序 ...
- MinGW中的头文件路径级环境变量设置
整理自 MinGW中的头文件路径 C头文件目录%MINGW_PATH%/include下有头文件,里面有strcpy等c函数的声明. C++头文件目录%MINGW_PATH%/lib/gcc/mi ...
- 理解C++中的头文件和源文件的作用【转】
一.C++编译模式通常,在一个C++程序中,只包含两类文件--.cpp文件和.h文件.其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码:而.h文件则被称作C++头文件,里面放的也是C+ ...
- VC中添加头文件以及库
原文:http://blog.csdn.net/lwb102063/article/details/52068389 附加头文件包含 VC6.0中: VC6.0默认include包含路径:Tool ...
- Linux中常用头文件的作用--转
http://blog.sina.com.cn/s/blog_5c93b2ab0100q62k.html 1. Linux中一些头文件的作用: <assert.h>:ANSI C.提供断言 ...
- 在.h和.cpp中包含头文件的区别
1.在.h中包含头文件,是为了声明一系列这个头文件的变量等,可能会产生重复包含的问题: 2.在.cpp中包含头文件只是为了实现这个头文件或者使用其中的方法,不会有重复包含的问题,所以尽量在源文件中包含 ...
- C语言中的头文件
1.头文件#include <> :表示引用标准库头文件,编译器会从系统配置的库环境中去寻找 2.头文件#include "":一般表示用户自己定义使用的头文件,编译器 ...
- 在Qt Creator的项目中添加头文件和库
在Qt Creator中的工程中,工程通过.pro文件管理. 额外需要连接的连接库unix:LIBS += -L your_lib_path -lyour_libwin32:LIBS += your_ ...
随机推荐
- CodeWarrior10 如何复制Workspace配置到另一个workspace
https://mcuoneclipse.com/2012/04/04/copy-my-workspace-settings/comment-page-1/#comment-106061
- excle 内部 超链接(锚点)
超连接对象: 1.文档 2.本文档中的位置. 3. 本文重点 指定 链接到 xx表中的xx位置. 第三种连接 类似于 web文档的中 锚点 超连接 看下图 选 择本文档中的位置, 选择 工作表. ...
- requests+django+bs4实现一个web微信的功能
前言: 今天我们利用requests模块+django+bs4浏览器来实现一个web微信的基本功能,主要实现的功能如下 a.实现返回二维码 b.实现手机扫码后二维码变成变成头像 c.实现手机点击登陆成 ...
- c#线程池中的异常
static void Main(string[] args) { //写日志 //使用线程池 ; i < ; i++) { ThreadPool.QueueUserWorkItem(new W ...
- LCMapString/LCMapStringEx实现简体字、繁体字的转换。
c#环境下想要最小程度不使用第三方库.程序性能,于是选择了这个Windows API. 转载自https://coolong124220.nidbox.com/diary/read/8045380 对 ...
- 关于键盘事件对象code值
e.keyCode || e.which || e.charCode; //IE只有keyCode属性,FireFox中有which和charCode属性,Opera中有keyCode和which属性 ...
- eclipse Filter web.xml 问题解决 异步请求@WebServlet
<filter> <filter-name>AsynServlete</filter-name> <filter-class>com.kad.app.a ...
- 解决Dynamic Web Module 3.1 requires Java 1.7 or newer
需要检查和确认Eclipse项目属性的java版本和本地jdk的版本一致,以1.7版本为例: 1. 在 Java Build Path的libraries中修改对应的JDK版本为1.7: 2.在Jav ...
- 如何在OneNote for Mac 中插入文件附件?
OneNote 2016 Mac是一款非常方便的云笔记软件,可以随时记录您稍纵即逝的创意,灵感和发现,发挥您的潜能,简化你的生活和工作.有用户反应如何在OneNote for Mac 中插入文件附件呢 ...
- UI行业发展预测 & 系列规划的调整
又双叒叕拖更了,上一篇还是1月22号更新的,这都3月9号了…… 前面几期把职业规划.能力分析.几个分析用的设计理论都写完了,当然实际工作中用到的方法论不止上面这些,后续会接着学习: 如果你的目标是一线 ...