《C++ Primer Plus》学习笔记——文本I/O和文本文件(cin读取原理)

文本I/O和文本文件(cin读取原理)

使用cin进行输入时,程序将输入视为一系列的字节,其中每个字节都被解释为字符编码(例如ASCII编码)。不管目标数据类型是什么,输入一开始都是字符数据——文本数据。然后,cin会负责将文本转换成其他类型。
假设有如下输入行:(看一看使用不同数据类型的变量来存储时,cin是如何处理输入行的。)
38.5 19.2
char数据类型

char ch;
cin>>ch;

输入行中的第一个字符被赋给ch。在这里,第一个字符是数字3,其字符编码(二进制)被存储在变量ch中。输入和目标变量都是字符。因此不需要进行转换。注意,这里存储的不是数值3,而是字符3的编码。执行上述输入语句后,输入队列中的下一个字符8,下一个输入操作将对其进行处理。
int数据类型

int in;
cin>>in;

cin将不断从输入行中读取字符,直到遇到非数字字符。也就是说,它读取38,这样句点(.)将成为输入队列中的下一个字符。cin通过计算发现,这两个个字符对应数值38,因此将38的二进制编码复制到变量n中。
double数据类型

double dou;
cin>>dou;

在这种情况下,cin将从输入行中不断读取,直到遇到第一个不属于浮点数的字符(第二次遇到句点也会停止读取)。也就是说,cin读取38句点5,使得空格成为输入队列中的下一个字符。cin通过计算发现,四个字符对应于数值38.5,因此将38.5的二进制编码(浮点格式)复制到变量dou中。
char[]

char word[50];
cin>>word;

在这种情况下,cin将不断读取,直到遇到空白字符。也就是说,它读取38句点5,使得空格成为输入队列中的下一个字符。然后,cin将4个字符的字符编码存储到数组word中,并在末尾加上一个空字符。这里不需要进行任何转换。
getline()

char word[50];
cin.getline(word,50);

cin将不断读取,直到遇到换行符(示例输入行少于50个字符)。所有字符都被存储到数组word中,并在末尾加上一个空字符。换行符被丢弃,输入队列中的下一个字符是下一行的第一个字符(示例中只有一行)。这里不需要进行转换。
对于输入,将执行相反的转换。即整数被转换成数字字符序列。浮点数被转换成数字字符和其他字符组成的字符序列。字符数据不需要进行任何转换。

输入一开始为文本。因此,控制台输入的文件版本是文本文件,即内阁字节都被存储了一个字符编码的文件。并非所有的文件都是文本文件。例如:数据库和电子表格以数值格式(即二进制整数或浮点格式)来存储数值数据。另外,字处理文件中可能包含文本信息,定拿也可能包含用于描述格式、字体、打印机等的非文本数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值