Das Asked:2024-08-17 16:31:00 +0000 UTC2024-08-17 16:31:00 +0000 UTC 2024-08-17 16:31:00 +0000 UTC 辛如何工作 772 对象如何一步步cin详细地工作。那是: 控制台输入 保存到缓冲区等 是否有后续或中间环节? c++ 2 个回答 Voted Best Answer Harry 2024-08-18T12:17:18Z2024-08-18T12:17:18Z 回答评论里的问题。 好吧,我想我仍然承认有几个物理缓冲区是一种极其奇怪的实现(这就是我编写实现细节的原因),但处理它要简单得多,也更符合逻辑。而且,按道理来说,他是唯一的一个。 根据标准,istream(basic_为简洁起见,所有内容都被省略)它使用streambuf,这是流的唯一逻辑缓冲区,并通过该缓冲区进行工作(再次 -逻辑上唯一的一个,并且可以在低级别完成的是第二件事,但是如果你读过它,那么很明显,虽然可以使用多个物理缓冲区,但它会导致严重的痔疮,所以我敢打赌根本无法找到具有多个缓冲区的实现。) 此外,通过使用setbuf(),您可以使用自己的缓冲区。哪种强调在任何情况下都只有一个 - 我无法想象为什么在使用缓冲区的内部实现时应该有多个缓冲区,而一个与外部缓冲区。总是有一个缓冲区是合乎逻辑的,代码会更简单。在这种情况下,在缓冲区中移动指针的所有函数的实现都更简单。 因此,尽管标准没有直接说明这一点,但物理流缓冲区仍然是唯一的。 PS 标准的鉴赏家们,标准中没有直接指出只有一个物理缓冲区吗?否则,我会为特别变态的人留下漏洞:),但我不确定我这样做是否有充分的理由...... Matvj 2024-08-17T19:32:44Z2024-08-17T19:32:44Z cin 具有一个变量 控制台输入首先发生,直到用户按 Enter 键。输入期间,数据存储在缓冲区中。 如果我们放置一个空格,则会启动一个新的输入缓冲区,但它不会保存到变量中,而只是被清除。 输入结束时,缓冲区中的数据被写入变量。然后缓冲区被清除。 具有多个变量的 cin 首先,发生到控制台的输入;如果我们输入一个空格,则开始一个新的缓冲区。在此期间,数据存储在缓冲区中。当用户按下回车键时,输入结束。 输入完成后,相应缓冲区中的数据将被重写到相应的变量中。然后缓冲区被清除。 1-下文中,字缓冲器指的是输入缓冲器。
回答评论里的问题。
好吧,我想我仍然承认有几个物理缓冲区是一种极其奇怪的实现(这就是我编写实现细节的原因),但处理它要简单得多,也更符合逻辑。而且,按道理来说,他是唯一的一个。
根据标准,
istream(basic_为简洁起见,所有内容都被省略)它使用streambuf,这是流的唯一逻辑缓冲区,并通过该缓冲区进行工作(再次 -逻辑上唯一的一个,并且可以在低级别完成的是第二件事,但是如果你读过它,那么很明显,虽然可以使用多个物理缓冲区,但它会导致严重的痔疮,所以我敢打赌根本无法找到具有多个缓冲区的实现。)此外,通过使用
setbuf(),您可以使用自己的缓冲区。哪种强调在任何情况下都只有一个 - 我无法想象为什么在使用缓冲区的内部实现时应该有多个缓冲区,而一个与外部缓冲区。总是有一个缓冲区是合乎逻辑的,代码会更简单。在这种情况下,在缓冲区中移动指针的所有函数的实现都更简单。因此,尽管标准没有直接说明这一点,但物理流缓冲区仍然是唯一的。
PS 标准的鉴赏家们,标准中没有直接指出只有一个物理缓冲区吗?否则,我会为特别变态的人留下漏洞:),但我不确定我这样做是否有充分的理由......
cin 具有一个变量
控制台输入首先发生,直到用户按 Enter 键。输入期间,数据存储在缓冲区中。
如果我们放置一个空格,则会启动一个新的输入缓冲区,但它不会保存到变量中,而只是被清除。
输入结束时,缓冲区中的数据被写入变量。然后缓冲区被清除。
具有多个变量的 cin
首先,发生到控制台的输入;如果我们输入一个空格,则开始一个新的缓冲区。在此期间,数据存储在缓冲区中。当用户按下回车键时,输入结束。
输入完成后,相应缓冲区中的数据将被重写到相应的变量中。然后缓冲区被清除。
1-下文中,字缓冲器指的是输入缓冲器。