PDA

View Full Version : خواندن از فایل



shaaadi
دوشنبه 06 اردیبهشت 1389, 21:27 عصر
سلام ... من دارم یک برنامه ای می نویسم ... توش باید از یه فایل بخونم ... 2 تا تابع دارم :



void Tree::open(){
file.open("data.txt");
}


void Tree::add(){
employer newman;
int height = node.size();
if (height==0)
{
vector<employer> b;
node.push_back(b);
height = 1;
}
int width = node[height-1].size();
//fstream file ;
//file.open("data.txt");
file >> newman.salary >> newman.name ;
if ( width < (height)*2 )
node[height-1].push_back(newman);
else if ( width == (height)*2 ){
vector<employer> a;
node.push_back(a);
node[height].push_back(newman);
}else
cout << "u r wrong!" << endl;
// file.close();

}
اول تو همین تابع add فایل رو باز می کردم اما دیدم هر دفعه از اول می خونه برای همین یک تابع جدا گانه تعریف کردم که فقط یک بار باز بشه ... اما تو این حالت هم ... فقط دفعه ی اول از فایل می خونه و دفعه های بعد چرت و پرت چاپ می کنه ... چرا ؟ مگه یک بار باز کردن فایل کافی نیست ؟(اخه نبستمش که !)
یک سوال دیگه این که چرا عدد رو درست از تو فایل می خونه اما name رو فقط حرف اولش رو می خونه ... اگه به خاطر اینه که char تعریف کردم ... پس چی باید تعریف کنم ؟

amin1softco
دوشنبه 06 اردیبهشت 1389, 23:30 عصر
یک بار باز کردن فایل کافیه اما باید کرسر خواندن از فایل رو کنترل کنید در مورد رشته هم باید سایزشو داشته باشیم و به اندازه سایزش از فایل بخونیم من به کد نگاه نکردم اما یکم دقت کنید حل می شه.........

shaaadi
دوشنبه 06 اردیبهشت 1389, 23:31 عصر
یک سوال دیگه هم از همین داشتم :

من میخوام همین تابع add رو با operator overloading پیاده کنم به طوری که با :
cin >> Cmp
یک داده به Cmp اضافه بشه ... در واقع همون add صدا زده بشه ...



Tree Tree:: operator>> (Tree &a)
این کار درسته ؟ اخه وقتی این کار رو میکنم میگه :
error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'Tree' (or there is no acceptable conversion)

amin1softco
سه شنبه 07 اردیبهشت 1389, 05:25 صبح
اینجوری که نمی شه شما باید جریان رو کنترل کنی
اول باید به صورت دوست کلاس جریان ورودی رو تعریف کنی :


friend istream& operator>>(istream&, Tree &a);

بعد اینجوری خودشو تعریف کنی:


istream& operator>> (istream& is, Tree &a) {
return is;
}


حالا باید تغییراتت رو روی جریان ورودی پیاده کنی

shaaadi
سه شنبه 07 اردیبهشت 1389, 12:32 عصر
خیلی خیلی خیلی ممنون! درست شد ...