用于了解输入和输出流缓冲区实际工作方式的程序
program for undertsanding how input and output stream buffers actually work
我是C++新手。所以,我正在尝试以下程序。而且我很难理解为什么当我在
#include<iostream>
#include<ios>
// for numeric_limits
#include<limits>
using namespace std;
void main()
{
int num1;
float num2;
cin >> num1;
//cin.ignore(numeric_limits<streamsize>::max(), 'n');
cin >> num2;
cout << num1 << num2;
}
目前输出为
5.6 <-- input
50.6
在这里,它甚至没有接受 num2 输入。
但是在我取消注释 cin.ignore 行后,它显示了完美的输出
5.6 <--num1
9.8 <--num2
59.8
谁能解释一下它是如何从头开始工作的,以及操作系统如何参与缓冲区创建?
num1 是 int,所以从流中读入 num1 变量的第一件事是5
,读取停止在第一个非数字字符处,即点.
。
然后 num2 被读取并且它是浮动的。.6
读作0.6
。
输出5
后跟0.6
,中间没有任何字符。
当你取消注释 cin.ignore(( 时,同样的事情会发生,除了在你读取 num2 之前,下一个换行符(包括(之前的所有字符都被丢弃。
您将5
读入 num1,丢弃.6n
然后9.8
读入 num2 变量,因为它是换行符之后的第一件事。
然后输出5
后跟9.8
,它们之间没有任何字符。
相关文章:
- 在 Eclipse 中添加库的工作方式是否与在 Visual Studio 中相同?
- OpenGL应用程序在不同的计算机上的工作方式不同
- 为什么我的代码在添加不相关的代码行后工作方式不同?
- wait_until在主线程而不是主线程中的工作方式不同吗? c ++
- 用于了解输入和输出流缓冲区实际工作方式的程序
- 有人可以解释速记赋值运算符的实际工作原理吗?
- 查找函数在unordered_map中的工作方式是搜索键值
- 字符串文字到 char 数组的转换如何在C++中实际工作
- 尝试使用 Qt 库中的 QPixmap 将图像拆分为多个块。关于他的复制方法的工作方式,我有什么不明白的吗?
- 容器类别在STL中的工作方式
- Unity 的 HLSL/Cg 预处理器工作方式错误?
- 无法让我了解 cin.get 和 cout 在这里的工作方式
- 不了解C 集合的工作方式
- 有人可以解释C 操作员=此处的工作方式
- 了解 declval 在copy_assignment情况下的工作方式
- 打开文件的正确模式是什么,以便 seekp() 的工作方式与在默认模式下打开的文件相同
- 了解文件页在技术级别的工作方式
- 战俘的工作方式不同,详细解释
- Ctrl Z的实际工作方式
- 转换构造函数的实际工作方式