cin的数据类型是什么
What is datatype of cin
我想知道cin到底是什么。我的意思是一个函数或 class.....
我确定它不是函数,因为我们使用 cin 的方式与调用 a 函数的方式非常不同。
剩下 class 或对象或其他选项。
具体是什么?
cin
是 对象 的 istream
class
C++ 标准 §27.4.1 [iostream.objects.overview]
#include <ios>
#include <streambuf>
#include <istream>
#include <ostream>
namespace std {
extern istream cin;
extern ostream cout;
extern ostream cerr;
extern ostream clog;
extern wistream wcin;
extern wostream wcout;
extern wostream wcerr;
extern wostream wclog;
}
p1 The header declares objects that associate objects with
the standard C streams provided for by the functions declared in
(27.9.2), and includes all the headers necessary to use these
objects.
你也可以看看 gcc 的 implementation on github:
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
// Standard stream objects.
// NB: Iff <iostream> is included, these definitions become wonky.
typedef char fake_istream[sizeof(istream)]
__attribute__ ((aligned(__alignof__(istream))));
typedef char fake_ostream[sizeof(ostream)]
__attribute__ ((aligned(__alignof__(ostream))));
fake_istream cin;
fake_ostream cout;
fake_ostream cerr;
fake_ostream clog;
#ifdef _GLIBCXX_USE_WCHAR_T
typedef char fake_wistream[sizeof(wistream)]
__attribute__ ((aligned(__alignof__(wistream))));
typedef char fake_wostream[sizeof(wostream)]
__attribute__ ((aligned(__alignof__(wostream))));
fake_wistream wcin;
fake_wostream wcout;
fake_wostream wcerr;
fake_wostream wclog;
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
我想知道cin到底是什么。我的意思是一个函数或 class.....
我确定它不是函数,因为我们使用 cin 的方式与调用 a 函数的方式非常不同。
剩下 class 或对象或其他选项。
具体是什么?
cin
是 对象 的 istream
class
C++ 标准 §27.4.1 [iostream.objects.overview]
#include <ios> #include <streambuf> #include <istream> #include <ostream> namespace std { extern istream cin; extern ostream cout; extern ostream cerr; extern ostream clog; extern wistream wcin; extern wostream wcout; extern wostream wcerr; extern wostream wclog; }
p1 The header declares objects that associate objects with the standard C streams provided for by the functions declared in (27.9.2), and includes all the headers necessary to use these objects.
你也可以看看 gcc 的 implementation on github:
namespace std _GLIBCXX_VISIBILITY(default) { _GLIBCXX_BEGIN_NAMESPACE_VERSION // Standard stream objects. // NB: Iff <iostream> is included, these definitions become wonky. typedef char fake_istream[sizeof(istream)] __attribute__ ((aligned(__alignof__(istream)))); typedef char fake_ostream[sizeof(ostream)] __attribute__ ((aligned(__alignof__(ostream)))); fake_istream cin; fake_ostream cout; fake_ostream cerr; fake_ostream clog; #ifdef _GLIBCXX_USE_WCHAR_T typedef char fake_wistream[sizeof(wistream)] __attribute__ ((aligned(__alignof__(wistream)))); typedef char fake_wostream[sizeof(wostream)] __attribute__ ((aligned(__alignof__(wostream)))); fake_wistream wcin; fake_wostream wcout; fake_wostream wcerr; fake_wostream wclog; #endif _GLIBCXX_END_NAMESPACE_VERSION } // namespace