std::cout,std::wcout
C++
编译器支持
自由(freestanding)与宿主(hosted)
语言
标准库
标准库头文件
具名要求
特性测试宏 (C++20)
语言支持库
概念库 (C++20)
诊断库
内存管理库
元编程库 (C++11)
通用工具库
容器库
迭代器库
范围库 (C++20)
算法库
字符串库
文本处理库
数值库
日期和时间库
输入/输出库
文件系统库 (C++17)
并发支持库 (C++11)
执行控制库 (C++26)
技术规范
符号索引
外部库
[编辑] 输入/输出库
I/O 操纵器
打印函数 (C++23)
C 风格 I/O
缓冲区
basic_streambuf
basic_filebuf
basic_stringbuf
basic_spanbuf(C++23)
strstreambuf(C++98/26*)
basic_syncbuf(C++20)
流
抽象
ios_base
basic_ios
basic_istream
basic_ostream
basic_iostream
文件 I/O
basic_ifstream
basic_ofstream
basic_fstream
字符串 I/O
basic_istringstream
basic_ostringstream
basic_stringstream
数组 I/O
basic_ispanstream(C++23)
basic_ospanstream(C++23)
basic_spanstream(C++23)
istrstream(C++98/26*)
ostrstream(C++98/26*)
strstream(C++98/26*)
同步输出
basic_osyncstream(C++20)
类型
streamoff
streamsize
fpos
错误类别接口
iostream_category(C++11)
io_errc(C++11)
[编辑] std::basic_ostream
全局对象
coutwcout
cerrwcerr
clogwclog
成员函数
basic_ostream::basic_ostream
basic_ostream::~basic_ostream
basic_ostream::operator=(C++11)
格式化输出
basic_ostream::operator<<
非格式化输出
basic_ostream::put
basic_ostream::write
定位
basic_ostream::tellp
basic_ostream::seekp
杂项
basic_ostream::flush
basic_ostream::swap(C++11)
成员类
basic_ostream::sentry
非成员函数
operator<<(std::basic_ostream)
print(std::ostream)(C++23)
println(std::ostream)(C++23)
vprint_unicode(std::ostream)(C++23)
vprint_nonunicode(std::ostream)(C++23)
[编辑]
定义于头文件
extern std::ostream cout;
(1)
extern std::wostream wcout;
(2)
全局对象 std::cout 和 std::wcout 控制输出到实现定义类型的流缓冲区(派生自 std::streambuf),该缓冲区与标准 C 输出流 stdout 关联。
这些对象保证在类型为 std::ios_base::Init 的对象首次构造期间或之前被初始化,并可在具有有序初始化的静态对象的构造函数和析构函数中使用(只要在定义对象之前包含
除非已发出 std::ios_base::sync_with_stdio(false),否则可以安全地从多个线程同时访问这些对象以进行格式化和非格式化输出。
根据 std::cin 的规范,std::cin.tie() 返回 &std::cout。这意味着对 std::cin 的任何输入操作都会执行 std::cout.flush()(通过 std::basic_istream::sentry 的构造函数)。类似地,std::wcin.tie() 返回 &std::wcout。
根据 std::cerr 的规范,std::cerr.tie() 返回 &std::cout。这意味着对 std::cerr 的任何输出操作都会执行 std::cout.flush()(通过 std::basic_ostream::sentry 的构造函数)。类似地,std::wcerr.tie() 返回 &std::wcout。(C++11 起)
[编辑] 注意
名称中的“c”指的是“字符”(stroustrup.com FAQ);cout 意为“字符输出”,wcout 意为“宽字符输出”。
由于动态初始化模板化变量是无序的,因此不能保证在这些变量的初始化开始之前 std::cout 已初始化为可用状态,除非已构造类型为 std::ios_base::Init 的对象。
[编辑] 示例
运行此代码
#include
struct Foo
{
int n;
Foo()
{
std::cout << "static constructor\n";
}
~Foo()
{
std::cout << "static destructor\n";
}
};
Foo f; // static object
int main()
{
std::cout << "main function\n";
}
输出
static constructor
main function
static destructor
[编辑] 另请参阅
Init
初始化标准流对象 (std::ios_base 的公共成员类) [编辑]
cerrwcerr
写入标准 C 错误流 stderr,无缓冲(全局对象)[编辑]
clogwclog
写入标准 C 错误流 stderr(全局对象)[编辑]
stdinstdoutstderr
与输入流关联的 FILE* 类型的表达式与输出流关联的 FILE* 类型的表达式与错误输出流关联的 FILE* 类型的表达式 (宏常量) [编辑]