<iostream>
声明控制从标准流读取和写入到标准流的对象。 这通常是从 C++ 程序执行输入和输出需要包括的唯一标头。
语法
#include <iostream>
注意
<iostream>
库使用 #include <ios>
、#include <streambuf>
、#include <istream>
和 #include <ostream>
语句。
备注
这些对象分为两组:
一旦对流执行某些操作(例如标准输入),就不能对同一个流执行面向另一种字符的操作。 因此,程序无法对 cin
和 wcin
等进行互换操作。
此标头中声明的所有对象共享一个特殊属性,可以假定在你定义的任意静态对象之前,将在包含 <iostream>
的翻译单元中构造这些对象。 同样,也可以假定在你定义任意此类静态对象的析构函数之前,这些对象不会被销毁。 (但是,在程序终止过程中输出流将刷新。)因此,可以在程序启动之前和程序终止之后安全地读取或写入标准流。
但这种保证并不普遍。 静态构造函数可能调用另一个翻译单元中的函数。 由于翻译单元在静态构造中的顺序不确定,因此被调用的函数不能假定已构造了此标头中声明的对象。 若要在此类上下文中使用这些对象,必须先构造 ios_base::Init
类的对象。
全局流对象
名称 | 描述 |
---|---|
cerr |
指定 cerr 全局流。 |
cin |
指定 cin 全局流。 |
clog |
指定 clog 全局流。 |
cout |
指定 cout 全局流。 |
wcerr |
指定 wcerr 全局流。 |
wcin |
指定 wcin 全局流。 |
wclog |
指定 wclog 全局流。 |
wcout |
指定 wcout 全局流。 |
cerr
对象 cerr
控制输出到与 <cstdio>
中声明的对象 stderr
关联的流缓冲区的过程。
extern ostream cerr;
返回值
一个 ostream
对象。
备注
该对象控制以字节流的形式无缓冲插入到标准错误输出的过程。 构造对象后,表达式 cerr.flags & unitbuf
非零,且 cerr.tie() == &cout
。 有关更多详细信息,请参阅 cerr.flags
和 unitbuf
。
示例
// iostream_cerr.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>
using namespace std;
void TestWide( )
{
int i = 0;
wcout << L"Enter a number: ";
wcin >> i;
wcerr << L"test for wcerr" << endl;
wclog << L"test for wclog" << endl;
}
int main( )
{
int i = 0;
cout << "Enter a number: ";
cin >> i;
cerr << "test for cerr" << endl;
clog << "test for clog" << endl;
TestWide( );
}
cin
指定 cin
全局流。
extern istream cin;
返回值
一个 istream
对象。
注解
该对象控制以字节流的形式从标准输入中进行提取的过程。 构造对象后,cin.tie
调用会返回 &cout
。
示例
本示例中,cin
在遇到非数字字符时会对流设置失败位。 该程序清除失败位,并从流中去除无效字符以继续执行操作。
// iostream_cin.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
int main()
{
int x;
cout << "enter choice:";
cin >> x;
while (x < 1 || x > 4)
{
cout << "Invalid choice, try again:";
cin >> x;
// not a numeric character, probably
// clear the failure and pull off the non-numeric character
if (cin.fail())
{
cin.clear();
char c;
cin >> c;
}
}
}
2
clog
指定 clog
全局流。
extern ostream clog;
返回值
一个 ostream
对象。
备注
该对象控制以字节流的形式缓冲插入到标准错误输出的过程。
示例
有关使用 clog
的示例,请参阅 cerr
。
cout
指定 cout
全局流。
extern ostream cout;
返回值
一个 ostream
对象。
备注
该对象控制以字节流的形式插入到标准输出的过程。
示例
有关使用 cout
的示例,请参阅 cerr
。
wcerr
指定 wcerr
全局流。
extern wostream wcerr;
返回值
wostream
对象。
备注
该对象控制以宽流的形式无缓冲插入到标准错误输出的过程。 构造对象后,表达式 wcerr.flags & unitbuf
非零。 有关更多详细信息,请参阅 wcerr.flags
和 unitbuf
。
示例
有关使用 wcerr
的示例,请参阅 cerr
。
wcin
指定 wcin
全局流。
extern wistream wcin;
返回值
wistream
对象。
备注
该对象控制以宽流的形式从标准输入中进行提取的过程。 构造对象后,wcin.tie
调用会返回 &wcout
。
示例
有关使用 wcin
的示例,请参阅 cerr
。
wclog
指定 wclog
全局流。
extern wostream wclog;
返回值
wostream
对象。
备注
该对象控制以宽流的形式缓冲插入到标准错误输出的过程。
示例
有关使用 wclog
的示例,请参阅 cerr
。
wcout
指定 wcout
全局流。
extern wostream wcout;
返回值
wostream
对象。
注解
该对象对将标准输出作为宽流插入的操作进行控制。
示例
有关使用 wcout
的示例,请参阅 cerr
。
wcout
语句中的 CString
实例必须转换为 const wchar_t*
,如下例所示。
CString cs("meow");
wcout <<(const wchar_t*) cs <<endl;
有关详细信息,请参阅基本 CString 操作。