C++语言并未定义任何输入输出(IO)语句,只是包含了一个全面的标准库来提供IO机制等。iostream库包含两个基础类型istream和ostream,分别表示输入流和输出流。一个流就是一个字符序列,是从IO设备读出或写入IO设备的。术语“流”表达的是:随着时间的推移,字符是顺序生成或消耗的。
标准输入输出对象
标准库定义了4个IO对象。使用名为cin(see-in)的istream类型对象处理输入,也被称为标准输入。输出同理使用名为cout的ostream类型的对象,也称为标准输出。此外2个ostream对象是cerr和clog,cerr输出警告和错误消息也称为标准错误。clog输出程序运行时的一般性信息。
系统通常将程序所运行的窗口与这些对象关联起来。因此当读取cin时数据将从程序正在运行的窗口读入,向cout、cerr和clog写入数据时将会写到同一个窗口。
一个使用IO库的程序
#include <iostream> ——告诉编译器使用iostream库,尖括号中的名字指出了一个头文件
int main (void)
{
std::cout << "Enter two numbers:" << std::endl;
int v1=0,v2=0;
std::cin >> v1 >> v2;
std::cout << "This sum of " << v1 << " and " << v2 << " is " << v1+v2 << std::endl;
return 0;
}
每个使用标准库设施的程序都必须包含相关的头文件。#include指令和头文件的名字必须写在同一行中。通常情况下#include指令必须出现在所有函数之外,一般放在源文件的开始位置。
向流写入数据
<<运算符接受两个运算对象:左侧的运算对象必须是一个ostream对象,右侧的运算符对象是要打印的值。此运算符将给定的值写到给定的ostream对象中。输出运算符的计算结果就是其左侧运算对象,即计算结果就是写入给定值的那个ostream对象。
std::cout << "Enter two numbers:" << std::endl;等价于 (std::cout << "Enter two numbers:")<< std::endl;
链中的每个运算符的左侧运算对象都是相同的。等价于
std::cout << "Enter two numbers:"; ——给用户打印一条消息,该消息是一个字符串字面值常量,是用一对双引号包围的字符序列,双引号之间的文本会被打印到标准输出
std::cout << std::endl; ——endl是一个被称为操纵符的特殊值。写入endl的效果是结束当前行,并将与设备关联的缓冲区中的内容刷到设备中。
缓冲刷新操作可以保证到目前为止程序所产生的的所有输出都真正写入到输出流中,而不是仅停留在内存中等待写入流。在程序中添加打印语句时,这类语句要保证“一直”刷新流。否则若程序崩溃,输出可能还留在缓冲区,导致关于程序崩溃位置的错误推断。
使用标准库中的名字
前缀std::指出名字cout和endl是定义在名为std的命名空间中的。命名空间可帮助避免不经意的名字定义冲突,以及使用库中相同名字导致的冲突。标准库定义的所有名字都在命名空间std中。通过命名空间使用标准库有一个副作用:当使用标准库中的一个名字时,必须显式说明使用来自命名空间std中的名字。
从流中读取数据
输入运算符(>>)与输出运算符类似,它接受一个istream作为其左侧运算对象,接受一个对象作为其右侧运算对象。从给定的istream读入数据,并存入给定对象中。输入运算符返回其左侧运算对象作为其计算结果。由于此运算符返回其左侧运算对象,因此可以将一系列请求合并到单一语句中。
浙公网安备 33010602011771号