c programming tutorial - בקלות C++
מדריכי תכנות

שיעור 10: קלט/פלט של קובץ ב ++C

זהו נושא קצת יותר מתקדם ממה שכיסיתי עד כה, אבל אני חושב שהוא שימושי. קלט/פלט של קובץ פירושו קריאה מקבצים וכתיבה אליהם. שיעור זה לא יכסה קבצי טקסט, כלומר, קבצים שמורכבים רק מטקסט ASCII.

ב ++C יש שתי מחלקות בסיסיות שמטפלות בקבצים, ifstream ו ofstream. כדי להשתמש בהן, הכלל את קובץ הכותרת ifstream .fstream.h מטפלת בקלט של קובץ (קריאה מקבצים), ו ofstream מטפלת בפלט של קובץ (כתיבה לקבצים). הדרך להצהיר על מופע של המחלקה ifstream או ofstream היא:

ifstream a_file;

או

ifstream a_file("filename");

הבנאי לשתי המחלקות יפתח את הקובץ אם אתה מעביר את השם כארגומנט. בנוסף, לשתי המחלקות יש פקודת פתיחה (a_file.open()) ופקודת סגירה (a_file.close()). זה רעיון טוב בדרך כלל לנקות אחריך ולסגור קבצים לאחר שסיימת.

היופי של השיטה של ++C לטיפול בקבצים טמון בפשטות של הפונקציות שמשמשות בפעולות בסיסיות של קלט ופלט. כיוון ש ++C תומכת בהגדרה מחדש של אופרטורים, ניתן להשתמש ב >> ו << לפני המופע של המחלקה כאילו שזה היה cout או cin.

לדוגמא:

#include <fstream.h>
#include <iostream.h>


int main()
{
  char str[10];  
         //Used later
  ofstream a_file("example.txt");
		//Creates an instance of ofstream, and opens example.txt
  a_file<<"This text will now be inside of example.txt"; 
			//Outputs to example.txt through a_file
  a_file.close();                           
			//Closes up the file
   ifstream b_file("example.txt"); 
			//Opens for reading the file
  b_file>>str;    
             //Reads one string from the file
  cout<<str;   
           //Should output 'this'
  b_file.close();    
           //Do not forget this! 
}

ברירת המחדל בפתיחת קובץ באמצעות הבנאי של ofstream היא ליצור אותו אם הוא לא קיים, או למחוק את כל מה שיש בו אם משהו כן קיים בו. במקרה הצורך, ניתן לתת ארגומנט שני שמציין איך צריך לטפל בקובץ. הארגומנטים מפורטים להלן:

ios::app -- פותח את הקובץ, ומאפשר הוספה בסופו.
ios::ate -- פותח את הקובץ, אבל מאפשר הוספה בכל מקום.
ios::trunc -- מוחק את כל מה שבקובץ.
ios::nocreate -- לא פותח את הקובץ אם יש ליצור אותו.
ios::noreplace -- לא פותח את הקובץ אם הוא כבר קיים.

לדוגמא:

ifstream a_file("test.txt", ios::nocreate);

הקוד לעיל יפתח את הקובץ test.txt רק אם הקובץ הזה לא קיים.




לדף הראשון

<< לדף הקודם

לדף הבא >>