C++ Iostreams用法详解(一)整体把握

个人觉得C++的iostream用起来是非常方便的,只需要使用简单的<<和>>运算符就可以方便的 进行各种类型的数据的格式化输入输出。而且C++中的iostream在编译阶段完成输入输出的格式化解析的,比C 中的printf()和scanf()在运行时格式化解析要更加安全和强大。在这个系列中我就来详细的介绍一下C++中各 种输入输出流的用法。

首先来大致了解一下C++中的iostreams,我们用到的所有的相关的内容都会定 义在下面的这些头文件里:

<fstream>    <iomanip>
<ios>    <iosfwd>
<iostream>    <istream>
<ostream>    <sstream>
<streambuf>    <strstream>

这其中我们用到最多的可能就是<iostream>,毕 竟几乎任何C++的教程都会以这个基础。当然这个头文件里面还有一些我们可能没有用到过的全局对象,在这 里也全部列出来:

cerr        Specifies the cerr global stream.
cin         Specifies the cin global stream.
clog       Specifies the clog global stream.
cout       Specifies the cout global stream.
wcerr     Specifies the wcerr global stream.
wcin      Specifies the wcin global stream.
wclog    Specifies the wclog global stream.
wcout    Specifies the wcout global stream.

这些都是全局的对象,在包含了<iostream> 之后我们就可以直接使用这些对象。至于怎么使用这些对象就不说了。

因为我们在头文件中常常只写 一些声明,而不喜欢在头文件中去引用全局对象,因为这样会涉及到对象的初始化问题,这是个比较复杂的问 题,幸运的是,C++的iostreams的设计者以一套非常完善的方法来解决了这个问题,基本上我们可以在需要的 时候(例如在头文件中声明重载<<运算符的函数)在头文件中任意的去include这些库头文件而不会出 现问题。但是其实C++标准库已经为我们提供了一个更为规范的头文件,向前引用声明(Declare forward references)头文件<iosfwd>。在这个头文件中只有一些声明,并不包含定义,当我们需要在头文件中 向前引用申明的时候,就可以包含这个头文件。查看这个头文件的内容也可以让我们清楚的了解到各种类的原 型,这个头文件中的部分内容如下:

类型声明:

typedef T1 streamoff;

typedef T2 streamsize;

typedef fpos streampos;

// wchar_t TYPE DEFINITIONS

typedef basic_ios<char, char_traits<char> > ios;

typedef basic_streambuf<char, char_traits<char> > streambuf;

typedef basic_istream<char, char_traits<char> > istream;

typedef basic_ostream<char, char_traits<char> > ostream;

typedef basic_iostream<char, char_traits<char> > iostream;

typedef basic_stringbuf<char, char_traits<char> > stringbuf;

typedef basic_istringstream<char, char_traits<char> > istringstream;

typedef basic_ostringstream<char, char_traits<char> > ostringstream;

typedef basic_stringstream<char, char_traits<char> > stringstream;

typedef basic_filebuf<char, char_traits<char> > filebuf;

typedef basic_ifstream<char, char_traits<char> > ifstream;

typedef basic_ofstream<char, char_traits<char> > ofstream;

typedef basic_fstream<char, char_traits<char> > fstream;

// wchar_t TYPE DEFINITIONS

typedef basic_ios<wchar_t, char_traits<wchar_t> > wios;

typedef basic_streambuf<wchar_t, char_traits<wchar_t> > wstreambuf;

typedef basic_istream<wchar_t, char_traits<wchar_t> > wistream;

typedef basic_ostream<wchar_t, char_traits<wchar_t> > wostream;

typedef basic_iostream<wchar_t, char_traits<wchar_t> > wiostream;

typedef basic_stringbuf<wchar_t, char_traits<wchar_t> > wstringbuf;

typedef basic_istringstream<wchar_t, char_traits<wchar_t> > wistringstream;

typedef basic_ostringstream<wchar_t, char_traits<wchar_t> > wostringstream;

typedef basic_stringstream<wchar_t, char_traits<wchar_t> > wstringstream;

typedef basic_filebuf<wchar_t, char_traits<wchar_t> > wfilebuf;

typedef basic_ifstream<wchar_t, char_traits<wchar_t> > wifstream;

typedef basic_ofstream<wchar_t, char_traits<wchar_t> > wofstream;

typedef basic_fstream<wchar_t, char_traits<wchar_t> > wfstream;

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++
, 文件
, 对象
, iostream
, cout 输出流
, stream
, c++ cin
, c++ cin
, global
, iostream数据结构
, 输出c++数据文件
, 格式c++
, 输出流重载c++信息
The
整体把握、整体把握教材、整体把握圆锥曲线、纵观全文 整体把握、boost iostreams,以便于您获取更多的相关知识。

时间: 2024-09-13 20:25:46

C++ Iostreams用法详解(一)整体把握的相关文章

C++ Iostreams用法详解(四)缓冲区

在前面说到过每一个iostream对象都有一个缓冲区,我们称之为流缓冲区,那个这个所谓的流缓冲区是怎 么存在的呢?iostreams中将该流缓冲区抽象为一个类,即streambuf类. 每个iostream的类都会包含 一个指向streambuf对象的指针,这也就意味着我们可以直接的去访问到这个指针,并向该streambuf对象发送 消息等(但是一般情况下我们并不需要这样做). 既然说我们可以得到这个指针,那isotreams类当然 会提供访问的接口了,这就是const成员函数rdbuf(),它

C++ Iostreams用法详解(三)状态标志位

iostreams中共有四个状态标志位定义在ios_base中,具体如下: namespace std { class ios_base { public: typedef implementation-defined-bitmask-type iostate; static const iostate badbit; static const iostate eofbit; static const iostate failbit; static const iostate goodbit;

C++ Iostreams用法详解(二)标准输入输出

首先说我们最常用的两个全局对象cin和cout,以下摘自MSDN: You can then extract values from cin or wcin to read the standard input. The rules for doing so are outlined in the description of the class basic_istream Class. You can also insert values to cout or wcout to write t

《Ansible权威指南》一2.4 Ansible系列命令用法详解与使用场景介绍

2.4 Ansible系列命令用法详解与使用场景介绍 如何获取Ansible的系列命令呢?在终端键入ansible后连续按两次Tab键,会补全所有以ansible字母开头的命令,这些命令均是Ansible系列命令.本节我们来逐一介绍Ansible的系列命令使用. ansible ansible-galaxy ansible-pull ansible-doc ansible-playbook ansible-vault ansible-console 2.4.1 ansible 命令ansible

js中 javascript:void(0) 用法详解_javascript技巧

javascript:void(0)表示不做任何动作.如: 复制代码 代码如下: <a href="javascript:void(0);" onclick="alert('ok');"></a>  这里表示这个链接不做跳转动作,执行onClick事件. 我想使用过ajax的都常见这样的代码: 复制代码 代码如下: <a href="javascript:doTest2();void(0);">here<

浅谈c++中的stl中的map用法详解_C 语言

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道.这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处. 下面举例说明什么是一对一的数据映射.比如一个班级中,每个学生的学号跟他的姓名就存在着一一

c++ 中__declspec 的用法详解_C 语言

c++ 中__declspec 的用法如下,想要了解的继续往下看吧. 语法说明: __declspec ( extended-decl-modifier-seq ) 扩展修饰符: 1:align(#) 用__declspec(align(#))精确控制用户自定数据的对齐方式 ,#是对齐值. e.g __declspec(align(32)) struct Str1{ int a, b, c, d, e; }; 它与#pragma pack()是一对兄弟,前者规定了对齐的最小值,后者规定了对齐的最

php9个超全局变量的用法详解(二)

今天来讲一下$_GET()与$_POST(). 其实很容易理解,根据表面意思就可以看得出来,是获得post与get表单的数据,其实也正是如此,来点专业的话来讲, $_GET 变量是一个数组,内容是由 HTTP GET 方法发送的变量名称和值. $_GET 变量用于收集来自 method="get" 的表单中的值.从带有 GET 方法的表单发送的信息,对任何人都是可见的(会显示在浏览器的地址栏),并且对发送的信息量也有限制(最多 100 个字符).好,看个例子,上简单登录界面的代码: 登

php9个超全局变量的用法详解(一)

PHP 中的许多预定义变量都是"超全局的",这意味着它们在一个脚本的全部作用域中都可用.在函数或方法中无需执行 global $variable; 就可以访问它们. 这些超全局变量是: $GLOBALS $_SERVER $_GET $_POST $_FILES $_COOKIE $_SESSION $_REQUEST $_ENV 1.先看一下$GLOBALS,它是包含了全部变量的全局组合数组,什么意思呢,看一个c语言程序 int main() { int a = 3; void t(