آموزش برنامه نویسی ++C و Qt قسمت دوم
فایلها در ++C
در ++C برای کار کردن با فایل از کلاس های ifstream، ofstream و fstream استفاده می شود که در کتابخانه fstream.h تعریف شده اند. اشیای ifstream و ofstream مشابه cin و cout هستند. این اشیا می تواند در برنامه برای نمایش فایل های مسطح و دستکاری آنها بکار رود.
کلاس ifstream برای فایل های ورودی استفاده می شود. اگر می خواهید فایلی را به منظور خواندن از آن باز کنید یک نمونه از این کلاس را مانند زیر ایجاد کنید.
ifstream fin();
برای باز کردن فایلی به منظور نوشتن در آن باید یک شیء ofstream ایجاد کرد.
ofstream fout();
#include <fstream.h>
int main() {
ofstream myfile ("test.txt");
if (myfile.is_open()){
myfile << "This outputting a line.\n";
myfile << "Guess what, this is another line.\n";
myfile.close();
}
return 0;
}
مثال. خواندن فایل متنی test.txt و نمایش آن روی صفحه.
#include <fstream.h>
#include <iostream.h>
int main (){
char buffer[256];
ifstream myfile ("test.txt");
while (! myfile.eof() ) {
myfile.getline (buffer,100);
cout << buffer << endl;
}
return 0;
}
کار با QFile :
در مثال بعدی به نحوهی چاپ متن در یک فایل متنی خواهیم پرداخت. از کلاس QFile برای این کار استفاده می شود برای مثال ما جملهای را با استفاده از این کلاس در فایل متنی ذخیره می کنیم.
#include
#include
int main()
{
QFile data("myfile");
if (data.open(QFile::WriteOnly)) {
QTextStream out(&data);
out << "You make me want to be a better man." << endl;
}
}
در مثال بعدی ما متنی به غیر از زبان انگلیسی را می خوانیم که دارای کاراکترهای خاص است، برای این کار از دستورات زیر بهره می جوییم.
#include
#include
int main()
{
QFile data("szerelem");
QString line;
if (data.open(QFile::ReadOnly)) {
QTextStream in(&data);
QTextStream out(stdout);
out.setCodec("UTF-8");
in.setCodec("UTF-8");
do {
line = in.readLine();
out << line << endl;
} while (!line.isNull());
}
}
که متن را به صورت UTF ورژن هشت ذخیره می کند. در مثال بالا فایل szerelem خوانده و سپس با قالب صحیح به خروجی می فرستد.
تمرین: با
استفاده از دستورات فوق برنامه ای بنویسید که فایلی را با فرمت UTF-8 نمایش و سپس
ذخیره کند.
نکته: نام فایل مشخص باشد. مثلا ۱٫txt و نیازی به بهره گیری از OpenDialog نمی باشد.