std::cout, std::wcout
定义于头文件 <iostream>
|
||
extern std::ostream cout; |
(1) | |
extern std::wostream wcout; |
(2) | |
全局对象 std::cout
和 std::wcout
控制到实现定义类型流缓冲(导出自 std::streambuf )的输出,它与标准 C 输出流 stdout 关联。
保证这些对象在首次构造 std::ios_base::Init 类型对象期间或之前初始化,并可用于拥有有序初始化的静态对象的构造函数和析构函数(只要在定义对象前包含 <iostream>
)。
除非发出 sync_with_stdio(false) ,否则从多个线程为有格式和无格式输出同时访问这些对象是安全的。
一旦初始化,则 std::cout
被 tie() 到 std::cin 而 std::wcout
被 tie() 到 std::wcin ,这表示任何 std::cin 上的输入操作执行 std::cout.flush() (通过 std::basic_istream::sentry 构造函数)。
一旦初始化,则 std::cout
亦被 tie() 到 std::cerr 而 std::wcout
被 tie() 到 std::wcerr ,这表示任何 std::cerr 上的输入操作执行 std::cout.flush() (通过 std::basic_istream::sentry 构造函数)。(C++11 起)
注解
名称中的 'c' 指代“字符”( stroustrup.com FAQ ); cout
表示“字符输出”而 wcout
表示“宽字符输出”。
示例
运行此代码
#include <iostream> struct Foo { int n; Foo() { std::cout << "static constructor\n"; } ~Foo() { std::cout << "static destructor\n"; } }; Foo f; // 静态对象 int main() { std::cout << "main function\n"; }
输出:
static constructor main function static destructor
参阅
初始化标准流对象 ( std::ios_base 的公开成员类) | |
写入到标准 C 错误流 stderr, 无缓冲 (全局对象) | |
写入到标准 C 错误流 stderr (全局对象) | |
与输入流关联到 FILE* 类型表达式 与输出流关联的 FILE* 类型表达式 与错误输出流关联的 FILE* 类型表达式 (宏常量) |