c++文件 *** 作 read

c++文件 *** 作 read,第1张

说明:0、一定要记得看msdn!有问题可以一块交流

1、回答你第一个问题,就是因为你没有指明,文件是要读出,还是写入,仅仅指明了二进制打开,所以出问题。

2、因为 fstream是文件流,所以重载了<<和>>符号,所以你可以当成cout和cin用,可以不用像c语言里面的那样用缓冲区读数据。就像下面的例子,所以可以一下子,把数据读出来。

3、声明fstream时,传入参数时,就打开了,也可以像你那样,再open(但是此时不要在声明时调用默认构造,就是要用这种形式:fstream fs就可以了)。

#include <fstream>

#include <iostream>

using namespace std

int main(int argc, char **argv)

{

fstream fs("1.txt", /*ios::in | */ios::out/* | ios::trunc*/)

if (!fs.bad())

{

// Write to the file.

// fs <<"Writing to a basic_fstream object..." <<endl

// fs.close()

// Dump the contents of the file to cout.

// fs.open("1.txt", ios::in)

cout <<fs.rdbuf()

/* //这里也是合法的

char buffer[100]

fs >>buffer

cout <<buffer

*/

fs.close()

}

}

把ofile.close()移到ifstream ifile("D:\\data.dat",ios::binary)前就OK!因为写完文件后不关闭的话,文件指针位置指在最后,后面读打开后接着这个位置向后读取数据了,后面并没有写入什么。

read()函数的原型是int read(int fd,void *buf,int count)。它的功能是“从文件说明符fd相关联的文件中读取count个字符,并把这些字符存储到buf所指的缓冲区中。返回值是 *** 作成功时所读到的字节数,在文件结束时可能少于count个字节;若返回值为-1则说明出错了,返回0则表示到达文件尾端。例:从文件ABC.txt中读取前100个字节存入数组buffer中——

#include "stdin.h"

#include "io.h"

#include "fcnt1.h"

int main(void){

int fd

char buffer[100]

if((fd=open("ABC.txt",O_RDONLY))==-1){

printf("Can't open file.\n")

exit(-1)

}

if(read(fd,buffer,100)!=100)

printf("Possible read error!\n")

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11849396.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存