C++ 流/class 模板/实例

C++ streams / class template / instance

我是一名新的 C++ 学生,很难理解 Steam input/output。

我实际上是在从一本书中学习,我发现下面几行让我很困惑。

"The iostream library provides many templates for handling common I/O operations. For example, class template basic_ostream supports stream-output operations..."

那么这是否意味着 basic_ostream 被定义为:

template <class basic_ostream>

在下一节中,我看到 "Predefined object cout is an ostream instance and is said to be " 行连接到“标准输出设备,通常是显示屏。”

所以根据以上陈述,我认为以下是正确的。

template <class basic_ostream>

class ostream {
    basic_ostream cout ( "some value" );
}

这让我很困惑,因为在后面的章节中,本书开始讨论 put 函数作为...

cout.put('A');

这意味着 cout 实际上是一个 class 对象,而不是 class 的实例。 我只是混淆了 'instance?' 的定义吗 请帮忙!!!

涉及的模板参数处理读取 from/written 到流的字符类型。

cout(和 cin、cerr、clog)类似于:

namespace std { 
    basic_ostream<char> cout;
    basic_ostream<char> cerr;
    basic_ostream<char> clog;
    basic_istream<char> cin;
}

还有读写宽字符的版本:

namespace std {
    basic_ostream<wchar_t> wcout;
    basic_ostream<wchar_t> wcerr;
    basic_ostream<wchar_t> wclog;
    basic_istream<wchar_t> wcin;
}

因此,这些标准流中的每一个都是 class 的一个实例,其中 class 是一个基于字符类型的模板实例化 from/written 到该流.

关于它的价值,还有一点:还有另一种类型称为 std::ios_base::Init,它在 main 开始执行之前创建这些实例,并在 main 完成执行后的某个时间销毁它们。