我是C++新学生,很难理解蒸汽输入/输出。
我实际上是在从一本书中学习,我发现下面的几行让我感到困惑。
"iostream 库提供了许多用于处理常见 I/O 操作的模板。例如,类模板basic_ostream支持流输出操作..."
那么这是否意味着basic_ostream被定义为:
template <class basic_ostream>
在下一节中,我看到"预定义对象cout是一个ostream实例,据说"连接到"标准输出设备,通常是显示屏。
因此,基于上述陈述,我认为以下内容是正确的。
template <class basic_ostream>
class ostream {
basic_ostream cout ( "some value" );
}
这让我非常困惑,因为在后面的章节中,这本书开始讨论 put 函数作为......
cout.put('A');
这意味着 cout 实际上是一个类对象,而不是类的实例。我只是混淆了"实例"的定义吗?请帮忙!!
所涉及的模板参数处理从流读取/写入流的字符类型。
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;
}
因此,这些标准流中的每一个都是类的一个实例,其中类是模板对从该流读取/写入的字符类型的实例化。
对于它的价值,还有一点:还有另一种称为 std::ios_base::Init
的类型,它在main
开始执行之前创建这些实例,并在main
完成执行后的某个时间销毁它们。