PDA

View Full Version : آموزش: کار با فایلها



javad_babaey
دوشنبه 25 اردیبهشت 1391, 01:36 صبح
سلام دوستان
با فرض اینکه از قبل یه فیال متنی داشته باشم
چطور میتونم این فایل متنی رو با ز کنم و سپس کراکتر به کراکتر بخوانم و بتونم اون رو توی یه متغیر قرار قرار بدم سپس تشخیص بدم مثلا اگر در این کراکتر حرف A وجود داشت جاش مثلا b1 بزار
سپس کراکتر بعدی
البته مشکل من چگونه باز کردن فایله و اینکه چطور کراکتر به کراکتر بخونم و درون یک متغیر قرار بدم سپس تشخیص بدم که این کراکتر چیه ؟
ممنون

soorena
دوشنبه 25 اردیبهشت 1391, 02:22 صبح
#include <iostream>
#include <string>
#include <fstream>
ifstream inFile;
inFile.open("a.txt",ios::in|ios::binary);
if (!inFile.is_open())
{
cout<<endl<<"can not open input file";
cout<<(string)"a.txt";
cout<<endl;
return -1;
inFile.seekg(0,ios::end);
sizef=inFile.tellg();
cout<<"file size is : "<<sizef;
inFile.seekg(0,ios::beg);
unsigned long int y=0;
while ( y<sizef)
{
inFile.read((char *)byte,1);
if (*byte=='A')
//do blah blah...
y++;
}

سلام

ممکنه یک کمی‌ اشکال نگارشی داشته باشه چون الان خیلی‌ سریع دستی‌ نوشتم ولی‌ به هر حال روند کلی‌ کار در ++C همین هستش.

javad_babaey
دوشنبه 25 اردیبهشت 1391, 11:52 صبح
دستتون درد نکنه حالا میشه مثلا اگر فایل a.txt از فبل موجود بود با دادن اسم این فایل خود ++C فایل رو با زکنه و تابع بالا را بر رویش اعمال کنه
اگر ممکنه نحو ه ی باز کردن و فایل با دادن اسم فایل رو هم یادم بدین یعنی توی خط پنجم
inFile.open("a.txt",ios::in|ios::binary);
a.txt که اسم فایله رو به عنوان یک متغیر از قبل ازم بگیره و جای این بخش بزاره

و یه سوال دیگه چرا توی خط 13 از tellg که برای فایلهای باینریه استفاده کردین مگه نباید در فایلهای متنی از tellp استفاده کرد؟
خیلی ممنون از لطفتون

developing
دوشنبه 25 اردیبهشت 1391, 12:35 عصر
با سلام

برای اینکه توسط یک متغیر بتونی اسم فایل رو بخونی باید از دستور cin استفاده کنی یعنی:

char* fileName;
cin.get(fileName, 255, \n);
inFile.open(fileName,ios::in|ios::binary);



نکته از cin.get استفاده کردیم که اگر خط فاصله هم توی آدرس فایل بود بخونش.

javad_babaey
دوشنبه 25 اردیبهشت 1391, 15:07 عصر
فقط میشه بفرمایید
چرا توی خط 13 از tellg که برای فایلهای باینریه استفاده کردین مگه نباید در فایلهای متنی از tellp استفاده کرد؟
خیلی ممنون از لطفتون

soorena
دوشنبه 25 اردیبهشت 1391, 23:13 عصر
سلام

چرا می‌شه از tellp هم استفاده کرد . در اصل tellg برای فایل‌های باینری هستش ولی‌ وقتی‌ می‌خوای کارکتر به کارکتر بخونی‌ فرق نمی‌کنه که از کدوم دست توابعی استفاده کنی‌.