PDA

View Full Version : مبتدی: سوال در مورد ofsteram



aali361
چهارشنبه 24 اردیبهشت 1393, 22:09 عصر
همونطور که میدونید ofstream برای نوشتن به کار میره که اگر ios_base به کار ببریم اطلاعات قبلی در اون فایل نگه داشته میشه در غیر اینصورت وقتی کامپایلر به این خط برسه اطلاعات فایل رو پاک میکنه /حالا کاری که من میخوام بکنم اینه که به این صوررت باشه
ofsteram f(***,ios_base::app)
بعد توی اون خطی که میخوام اطلاعات جدید رو وارد کنم اطلاعات فایل پاک بشه و بعد اطلاعات جدید وارد بشه .
f<<dastore delet<<new information

همچین چیزی وجود داره؟

raminlich
پنج شنبه 25 اردیبهشت 1393, 00:09 صبح
همونطور که میدونید ofstream برای نوشتن به کار میره که اگر ios_base به کار ببریم اطلاعات قبلی در اون فایل نگه داشته میشه در غیر اینصورت وقتی کامپایلر به این خط برسه اطلاعات فایل رو پاک میکنه /حالا کاری که من میخوام بکنم اینه که به این صوررت باشه
ofsteram f(***,ios_base::app)
بعد توی اون خطی که میخوام اطلاعات جدید رو وارد کنم اطلاعات فایل پاک بشه و بعد اطلاعات جدید وارد بشه .
f<<dastore delet<<new information

همچین چیزی وجود داره؟
سلام
اینارو از کتاب دیدم گفتم شاید به دردت بخوره من خودم زیاد سر در میارم از اینا
ios::ate شما را در انتهای فایل قرار می دهد اما میتوانید داده هارو در هر جای فایل بنویسید
ios::trunc آرگومان پیش فرض است محتویات فایل موجود را پاک میکند
:لبخند:

rahnema1
پنج شنبه 25 اردیبهشت 1393, 19:34 عصر
#include <iostream>
#include <string>
#include <fstream>
#include <stdarg.h>
#include <stdlib.h>
#include <unistd.h>

using namespace std;
struct student{
int id;
string name;
int sc;
friend ifstream& operator>>(ifstream& stream, student& st)
{
stream>>st.id>>st.name>>st.sc;
return stream;
}
};
void insert()
{
int z, j = 1,d=1000,v,h,id,i=0;
ofstream f("f:\\z.txt",ios_base::app);
ifstream fz("f:\\z.txt");
student b[100];
while(fz >>b[i++]);
cout << "how many student do you want to insert?" << endl;
cin >> z;
system("cls");
for (j = i; j < i+z; j++)
{
do{
h=0;
cout << "insert id" << endl;
cin >> id;
for (v = 0; v < j; v++){
if (id == b[v].id)
{
h = 1;
cout << "this id has been inserted\n";
break;
}
}
}while(h==1);
b[j].id=id;
cout << "insert name" << endl;
cin >> b[j].name;
cout << "insert score" << endl;
cin >> b[j].sc;
system("cls");
f << b[j].id << '\t' << b[j].name << '\t' << b[j].sc<<endl;
}
f.close();
fz.close();

}
void Delete()
{
int z, j = 1,d=1000,v,h,id,i=0, pos=0,offset1;
ofstream f("f:\\z.txt",ios_base::in|ios_base::out);
ifstream fz("f:\\z.txt");
student b1;
cout << "which student do you want to delete? insert his/her id:" ;
fz.seekg (0, fz.end);
int length = fz.tellg();
fz.seekg (0, fz.beg);
do{
h=0;
cin >> id;
system("cls");
while(fz >>b1)
{
if (id == b1.id)
{
h = 0;
offset1=length-(fz.tellg()-pos)-1;
f.seekp (pos-3);
fz.seekg (fz.tellg()-2);
f << fz.rdbuf();
break;
}
pos=fz.tellg();
}
fz.seekg (0, fz.beg);
pos=0;
}while(h==1);
fz.close();
f.close();
truncate("f:\\z.txt",offset1);
}
int main()
{
int i;
cout << "1)insert"<<" "<<"2)delete"<<endl;
cin >> i;
if (i == 1)
insert();
if (i == 2)
Delete();
}