提问人:Thang Tons 提问时间:10/3/2023 最后编辑:273KThang Tons 更新时间:10/3/2023 访问量:87
在 C++ 中存储输入数据的对象“cin”的数据成员的名称是什么?
What is the name of the data member of an object "cin" which stores an input data in C++?
问:
例如。cin>>var; 对象 cin 从用户那里读取输入数据,一旦按下 ENTER 键,操作员“>>”就会提取 cin 的内容并存储到特定变量“var”中。这意味着输入数据首先存储在 cin 对象中。
现在,如果 cin 存储数据,那么我很想知道输入的数据将存储到 cin 对象的哪个 MEMBER DATA???例如。cin.memberdataname 或 cin.xxxx 等??最初存储输入数据的成员数据的名称是什么?
答:
如果 CIN 存储数据
不,它不存储数据。它将标准输入流链接到内存地址。标准输入不一定是键盘,因为 txt 文件可以用作输入,但 cin 代表控制台输入,它真正做的是获取操作系统的控制台界面,该界面与键盘绑定并将应用程序绑定在链上。测试这一点的一种方法是检查应用程序的汇编代码,您只会看到一个变量,即“var”。但是,除了使用 cin 之外,还有其他方法可以获取输入,但这是另一个问题,如果你是那个好奇心。
评论
C++ 语言完全没有指定如何(或者更确切地说,它是关联的实现)从标准输入流中读取数据。C++ 唯一指定的是它这样做(默认情况下,该读取与 、 和 friends 等 C stdio 函数同步)。std::cin
std::streambuf
scanf
fread
常见的方法是让 在内部使用 C stdio 函数,并在两者之间提供最少的缓冲或没有缓冲。例如,如果你看一下 libstdc++ 实现,你可以看到它根本不使用 的 buffer 指针,只是直接返回 、 和类似的 C I/O 函数的结果。std::cin
std::streambuf
std::streambuf
fread
getc
更深入一步,该结构所指向的结构可以很好地缓冲它从底层操作系统 I/O 函数(即 POSIX、Windows 等)读取的数据,但该结构对标准库用户来说是不透明的。它的定义不会公开,因此除非通过 C stdio 函数,否则无法检查它。FILE
FILE*
std::cin
std::streambuf
read
ReadFileEx
FILE
cin>>var
是对原型等函数的调用。 通过引用传递。当输入被解码时,结果只是存储在 .operator>>(cin,var)
istream &operator>>(istream &s,sometype & var)
var
var
例如,您可以重载该运算符,以提取包含三个字段的 a,并且:Date
month
day
year
istream &operator>> (istream &is, Date &dt) {
is >> dt.month >> dt.day >> dt.year;
return is;
}
标准类型没有太大区别,只是解码并存储到引用的变量中。
评论
std::cin
不存储任何数据,它是无缓冲的,终端窗口在按下 Enter 后发送输入数据。cin
不存储任何数据。它有一个关联的对象,cin 的默认对象从您键入的终端窗口读取和缓冲数据。然后从 .这是流在 C++ 中工作方式的基础,因为可以在不改变运算符使用流的方式的情况下交换流streambuf
streambuf
operator>>
streambuf
cin