فایلها و ورودی/خروجی در ++C
یکی از ویژگیهای مهم در هر زبان برنامهنویسی، کار با فایلها و مدیریت ورودی/خروجی است. در ++C، مدیریت ورودی و خروجی از طریق کتابخانه استاندارد iostream انجام میشود و برای کار با فایلها از کتابخانه fstream استفاده میکنیم. در این بخش، به نحوه کار با فایلها، ورودی و خروجی در ++C پرداخته میشود.
۱. ورودی و خروجی در ++C
۱.۱ کتابخانه iostream
برای انجام عملیات ورودی و خروجی در ++C، از کتابخانه iostream استفاده میشود که شامل دو شیء اصلی است:
- cin: برای دریافت ورودی از کاربر.
- cout: برای نمایش خروجی به کاربر.
۱.۲ ورودی از کاربر
برای دریافت ورودی از کاربر، از شیء cin استفاده میکنیم:
using namespace std;
int main() {
int num;
cout << "لطفاً یک عدد وارد کنید: ";
cin >> num; // دریافت ورودی از کاربر
cout << "شما عدد " << num << " را وارد کردهاید." << endl;
return 0;
}
در این مثال، مقدار عددی که کاربر وارد میکند در متغیر num ذخیره میشود و سپس در خروجی نمایش داده میشود.
۱.۳ نمایش خروجی
برای نمایش اطلاعات به کاربر، از شیء cout استفاده میشود:
using namespace std;
int main() {
string name;
cout << "نام خود را وارد کنید: ";
cin >> name;
cout << "سلام، " << name << "!" << endl;
return 0;
}
در این مثال، نام وارد شده توسط کاربر در متغیر name ذخیره شده و سپس با استفاده از cout نمایش داده میشود.
۲. کار با فایلها در ++C
برای کار با فایلها در ++C از کتابخانه fstream استفاده میشود که سه شیء اصلی دارد:
- ofstream: برای نوشتن دادهها در یک فایل.
- ifstream: برای خواندن دادهها از یک فایل.
- fstream: برای خواندن و نوشتن دادهها در یک فایل (هر دو).
۲.۱ نوشتن در فایل با ofstream
برای نوشتن دادهها در یک فایل، از کلاس ofstream استفاده میکنیم:
#include <fstream>
using namespace std;
int main() {
ofstream file("output.txt"); // باز کردن یا ایجاد فایل برای نوشتن
if (file.is_open()) {
file << "سلام، این یک فایل متنی است!" << endl;
file << "این خط دوم است." << endl;
file.close(); // بستن فایل پس از نوشتن
cout << "دادهها در فایل ذخیره شدند." << endl;
} else {
cout << "خطا در باز کردن فایل!" << endl;
}
return 0;
}
در این مثال، دادهها به فایل output.txt نوشته میشوند. اگر فایل وجود نداشته باشد، به طور خودکار ایجاد میشود.
۲.۲ خواندن از فایل با ifstream
برای خواندن دادهها از یک فایل، از کلاس ifstream استفاده میکنیم:
#include <fstream>
using namespace std;
int main() {
ifstream file("output.txt"); // باز کردن فایل برای خواندن
if (file.is_open()) {
string line;
while (getline(file, line)) { // خواندن خط به خط از فایل
cout << line << endl; // نمایش هر خط در کنسول
}
file.close(); // بستن فایل پس از خواندن
} else {
cout << "خطا در باز کردن فایل!" << endl;
}
return 0;
}
در این مثال، فایل output.txt خوانده میشود و هر خط آن در کنسول نمایش داده میشود.
۲.۳ استفاده از fstream برای خواندن و نوشتن
کلاس fstream به شما این امکان را میدهد که همزمان هم برای خواندن و هم برای نوشتن دادهها در فایل استفاده کنید:
#include <fstream>
using namespace std;
int main() {
fstream file("example.txt", ios::in | ios::out | ios::app); // باز کردن فایل برای خواندن و نوشتن
if (file.is_open()) {
file << "این داده جدید است که به فایل اضافه میشود." << endl;
file.seekg(0); // تنظیم مکان خواندن به ابتدای فایل
string line;
while (getline(file, line)) {
cout << line << endl;
}
file.close(); // بستن فایل پس از خواندن و نوشتن
} else {
cout << "خطا در باز کردن فایل!" << endl;
}
return 0;
}
در این مثال، فایل example.txt برای خواندن و نوشتن باز میشود. داده جدیدی به فایل اضافه شده و سپس محتویات آن خوانده میشود.
۳. حالتهای مختلف باز کردن فایلها
در ++C میتوانید فایلها را با حالتهای مختلف باز کنید. این حالتها از طریق مقادیر ثابت در کلاسهای ifstream, ofstream, و fstream مشخص میشوند:
- ios::in: باز کردن فایل برای خواندن.
- ios::out: باز کردن فایل برای نوشتن.
- ios::app: اضافه کردن داده به انتهای فایل (افزودن به فایل بدون حذف دادههای قبلی).
- ios::ate: باز کردن فایل و قرار گرفتن در انتهای فایل.
- ios::trunc: اگر فایل از قبل وجود داشته باشد، محتویات آن پاک میشود و فایل جدید ایجاد میشود.
۴. بررسی خطاها در کار با فایلها
در هنگام کار با فایلها، ممکن است با خطاهایی روبرو شوید. برای بررسی اینکه آیا فایل بهدرستی باز شده است یا خیر، میتوانید از متد ()is_open استفاده کنید. همچنین، پس از انجام عملیات فایل، میتوانید از متد ()fail برای بررسی موفقیتآمیز بودن عملیات استفاده کنید.
#include <fstream>
using namespace std;
int main() {
ofstream file("output.txt");
if (!file) {
cout << "خطا در باز کردن فایل!" << endl;
return 1;
}
file << "دادههای جدید در فایل." << endl;
if (file.fail()) {
cout << "خطا در نوشتن به فایل!" << endl;
return 1;
}
file.close();
return 0;
}
در این مثال، از ()fail برای بررسی هر گونه خطا در هنگام نوشتن دادهها به فایل استفاده شده است.
نتیجهگیری
در ++C، کار با فایلها و ورودی/خروجی از طریق کتابخانههای iostream و fstream انجام میشود. با استفاده از این کتابخانهها میتوانید دادهها را از کاربر دریافت کنید، به فایلها بنویسید و از آنها بخوانید. همچنین، میتوانید انواع مختلفی از عملیات فایل را انجام دهید و خطاها را بهطور مؤثر مدیریت کنید.
