栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

DEMYSTIFYING C++ I/O

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

DEMYSTIFYING C++ I/O

0.INDEX&INTRODUCING

 

ChaPTEr 13: DEMYSTIFYING C++ I/O  409
Using Streams  410
What Is a Stream, Anyway?  410
Stream Sources and Destinations  411
Output with Streams  411
Output Basics  412
Methods of Output Streams  412
Handling Output Errors  414
Output Manipulators  415
Input with Streams  417
Input Basics  417
Handling Input Errors 418
Input Methods  419
Input Manipulators  423
Input and Output with Objects  423
String Streams  425
File Streams  426
Text Mode versus Binary Mode  427
Jumping around with seek() and tell()  428
Linking Streams Together  430
Bidirectional I/O  431
Summary  432
Please note that all the code examples for this chapter are available as a part of this chapter’s
code download on the book’s website at  www.wrox.com/go/proc++4e  on the Download
Code tab.
A program’s fundamental job is to accept input and produce output. A program that produces
no output of any sort would not be very useful. All languages provide some mechanism for
I/O, either as a built-in part of the language or through an OS-specific API. A good I/O sys-
tem is both flexible and easy to use. Flexible I/O systems support input and output through a
variety of devices, such as files and the user console. They also support reading and writing of
different types of data. I/O is error-prone because data coming from a user can be incorrect or
the underlying file system or other data source can be inaccessible. Thus, a good I/O system is
also capable of handling error conditions.
If you are familiar with the C language, you have undoubtedly used  printf() and  scanf() .
As I/O mechanisms,  printf() and  scanf() are certainly flexible. Through escape codes and
variable placeholders, they can be customized to read in specially formatted data, or output
any value that the formatting codes permit, which is currently limited to integer/character val-
ues, floating point values, and strings. However,  printf() and  scanf() falter on other mea-
sures of good I/O systems. They do not handle errors particularly well, they are not flexible
enough to handle custom data types, and in an object-oriented language like C++, they are not
at all object oriented.
1.USING STREAMS

The stream metaphor takes a bit of getting used to. At first, streams may seem more complex than traditional C-style I/O, such as  printf() . In reality, they seem complicated initially only because there is a deeper metaphor behind streams than there is behind  printf() . Don’t worry, though; after a few examples, you’ll never look back.

1.1 What Is a Stream, Anyway?
Chapter 1 compares the  cout stream to a laundry chute for data. You throw some variables
down the stream, and they are written to the user’s screen, or console. More generally, 
all streams can be viewed as data chutes. Streams vary in their direction and their 
associated source or destination. For example, the  cout stream that you are already 
familiar with is an output stream, so its direction is “out.” It writes data to the 
console so its associated destination is “console.” The  c in cout does not stand for 
“console” as you might expect, but stands for “character” as it’s a character-based 
stream. There is another standard stream called  cin that accepts input from the user.
Its direction is “in,” and its associated source is “console.” As with  cout , the  c 
in  cin stands for “character.” Both  cout and  cin are predefined instances of streams 
that are defined within the  std namespace in C++. The following table gives a brief 
description of all predefined streams.


The difference between buffered and unbuffered streams is that a buffered stream does 
not immediately send the data to the destination, but instead, it buffers incoming data 
and then sends it in blocks. An unbuffered stream, on the other hand, immediately sends 
the data to the destination.Buffering is usually done to improve performance, as certain 
destinations, such as files, perform better when writing bigger blocks at once. Note 
that you can always force a buffered stream to send all its currently buffered data to 
the destination by flushing its buffer using the  flush() method.

暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015355.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号