码迷,mamicode.com
首页 > 编程语言 > 详细

C/C++之文件打开方式差别

时间:2015-02-11 01:45:37      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:

一、引言

在上一篇中,需要获取文件的大小,但是获取的文件大小与从文件中读取的数据大小总是对不上(10行数据,文件大小是129,但是读取数据是119),因此,实现的服务器总是出现这个错误:net::ERR_CONTENT_LENGTH_MISMATCH

二、原因

造成这个错误的原因是,获取文件大小时,是使用seekg函数,而它是安字节来跳转读取位置的,但是读取文件时,我却使用了以文本打开的方式来读取文件。而以文本的方式读取文件时每个平台是会对行结束符做处理的。比如说,windows下会自动的把\r\n结尾的行读取为\n结尾。由于这样的转换,导致了上面的情况(10行数据,文件大小是129,但是读取数据是119)。

以二进制方式打开:

技术分享

可以看到,行是以\r\n结尾的。

以文本方式打开:

技术分享

可以看到,行是以\n为结尾的,也就是说,当我们以文本方式打开是,操作系统为我们做了自动转换。

C/C++之文件打开方式差别

标签:

原文地址:http://www.cnblogs.com/lit10050528/p/4285181.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!