请求高手帮助!如何用c++文件流实现从一个文件中读取数据,完成操作后把新的数据写入同一个文件中去??

请求高手帮助!如何用c++文件流实现从一个文件中读取数据,完成操作后把新的数据写入同一个文件中去??要求覆盖原来旧的数据,最好有代码范例,谢谢了!

第1个回答  2012-04-13
"r"(只读)
为输入打开一个文本文件,不存在则失败

"w"(只写)
为输出打开一个文本文件,不存在则新建,存在则删除后再新建

"a"(追加)
向文本文件尾部增加数据,不存在则创建,存在则追加

'rb"(只读)
为输入打开一个二进制文件,不存在则失败

"wb"(只写)
为输入打开一个二进制文件,不存在则新建,存在则删除后新建

"ab"(追加)
向二进制文件尾部增加数据,不存在则创建,存在则追加

"r+"(读写)
为读写打开一个文本文件,不存在则失败

"w+" (读写)
为读写建立一个新的文本文件,不存在则新建,存在则删除后新建

"a+"(读写)
为读写打开一个文本文件,不存在则创建,存在则追加

"rb+"(读写)
为读写打开一个二进制文件,不存在则失败

"wb+"(读写)
为读写建立一个新的二进制文件,不存在则新建,存在则删除后新建

"ab+"(读写)
为读写打开一个二进制文件,不存在则创建,存在则追加

把wb改成ab!
第2个回答  2012-04-12
我记得我当初学文件流的时候,是纠结怎么不覆盖数据在文件末尾写入。
如果需要覆盖的话,直接写就可以了。追问

关键是程序运行后文件里的内容在读入之前就清空了,导致没有数据输入,不知道为什么。。。

追答

你别直接把输入流和输出流一起用,
先用输入流把数据存起来。存在一个合适的地方,比如数组、容器什么的。
处理之后再用输出流。

比如说文件里面的是一些数字,需要把它们排序之后再存放,可以这样处理:
freopen("路径", "rt", stdin);
int num;
vector nums;
cin >> num;
nums.push_back(num);
sort(nums.begin(), nums.end());
freopen("路径", "wt", stdout);
for(vector ::iterator iter = nums.begin(); iter != nums.end(); iter ++)
cout << *iter << " ";

上面这段代码是把文件中的数字进行排序。我用的是容器。当然数组是一样的。
关键是思路:先把文件里面的数据用临时变量存起来,处理之后再放入。

不知道你明白了没~~~

本回答被提问者采纳
第3个回答  2012-04-13
#include<iostream>
#include<fstream>
using namespace std;
int main()
{
int a[10];
ifstream iffile("f1.txt",ios::in);

ofstream ofile("f1.txt",ios::out);
if(!ofile||!iffile)
{
cerr<<" error!"<<endl;
exit(1);
}
for(int i=0;i<10;i++)
{
iffile>>a[i];
a[i]+=10;
cout<<a[i]<<" ";
ofile<<a[i]<<" ";
}
ofile.close();
iffile.close();
return 0;
}
第4个回答  2012-04-13
ofstream file("1.txt",ios_base::app | ios_base::binary);
ifstream file("1.txt",ios::in | ios::binary);

c++文件的读取和写入
在C++中,可以使用文件流对象进行文件的读取和写入操作。主要包括 `ifstream`和 `ofstream`两个类。详细解释:1. 文件流的引入:C++中,为了操作文件,引入了文件流的概念。通过文件流,程序可以与文件进行通信,实现数据的读取和写入。2. 读取文件:当需要从一个文件中读取数据时,可以创建一个`ifstream...

C++如何在文件中读取数据,然后保存在一个数组中
using namespace std;void main(){ int s[5][2];ifstream fin("a.txt");int x;fin>>x;for(int i=1;i<x;i++){ for(int j=1;j<2;j++){ fin>>s[i][j];} } ofstream fout("input.txt");fout<<x;for(int k=1;k<k;k++){ for(int t=1;t<2;t++){ fout<...

C++中如何利用<fstream>从txt文件中读入和输出完整的一句话?
从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。 在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h。下面就把此类的文件...

c++中怎样读取磁盘文本文档中的文件,然后经过修改后再输出到一个新的...
按行读取,然后按照自己的要求对读取的每一行进行修改。

用vc++逐行读取文本文件txt里面的数据,并且复制给数组
include<stdlib.h> define MAX 20000 char *srcfile = "data.txt";\/\/文件名 int data[MAX][8];int main(){ FILE *src = fopen(src,"r");int i,j;for(i = 0;i < MAX;i++){ fscanf(srcfile,"%d,%d,%d,%d,%d,%d,%d,%d",&data[i][0],&data[i][1],&data[i][2],&...

怎么用C++在文本中读取一行或多行指定的数据?
1、fgets函数:原型:char * fgets(char * buf, int bufsize, FILE * stream);功能:从文件结构体指针stream中读取数据,每次读取一行;说明:读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋值为\\0)。如果该行不足bufsize个字符,则读完该行就结束,如果该行...

c++中fopen函数读文件怎么用文件数据?
\\x0d\\x0a一、C文件操作:\\x0d\\x0a C语言中,文件的操作都是通过一个FILE类型的文件指针进行,也就是说只有通过文件指针,才能调用相应的文件。FILE是一个由系统定义的结构体(定义在stdio.h中),可以存放文件的相关信息。\\x0d\\x0a文件的打开(fopen函数)\\x0d\\x0a 文件的操作过程一般...

寻c++编程高手 关于读二进制文件操作 (解决了再多加分)
void main(){ long i,j,k,m;signed char *bin;char name[20];FILE *fp[5];bin=NULL;for(i=1;i<1000;i+=5){ for(j=0;j<5;j++){ sprintf(name,"d:\\\\a\\\\%d.bin",j+i);fp[j]=fopen(name,"r+");} m=_filelength(fp[0]->_file);if(bin==NULL) bin=new signed ...

读取文本文件后的传值问题
建议你使用c++的ifstream读取文件,用peek检测下一个字符,如果是空格就结束读取一个数字,准备下一个数字;如果是0-9就把它加到已读到的数字的10倍上;如果是‘s’就暂停等待continue 具体实现你参考下ifstream的帮助文档。

...编程高手请进来帮帮看看这个程序,关于文件操作的,在线等待……_百度...
打开文件的时候要指定是打开输出和读入。file.open("my_daling.txt", ios::in | ios:: out | ios::app | ios::binary);

相似回答