כיצד לקרוא ולכתוב לקובץ ב- C ++

How Read Write File C



במאמר זה, אנו הולכים להראות לך כיצד לקרוא ולכתוב לקובץ בשפת התכנות C ++ על ידי שימוש במספר דוגמאות. כדי להבין את פעולות הקובץ C ++ כמו קריאה וכתיבה, עלינו להבין תחילה את הרעיון של זרם ב- C ++.

מהו נחל?

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









ב- C ++, אנו משתמשים בזרם לשליחת או קבלת נתונים למקור חיצוני או ממנה.



אנו יכולים להשתמש בשיעורים מובנים כדי לגשת לזרם קלט/פלט, כלומר ios.





להלן ההיררכיה של מחלקת הזרמים של שפת התכנות C ++:



אובייקטים cin ו- cout משמשים לקריאת הנתונים מהמקלדת ולהצגת הפלט על הצג, בהתאמה. בנוסף, ifstream, המייצג זרם קבצי קלט, משמש לקריאת זרם נתונים מקובץ, ו- ofstream, המייצג זרם קובצי פלט, משמש לכתיבת זרם נתונים לקובץ.

קובץ iostram.h מכיל את כל שיעורי הזרמת הקלט/פלט הסטנדרטיים הנדרשים בשפת התכנות C ++.

דוגמאות

כעת, לאחר שהבנת את יסודות הזרמים, נדון בדוגמאות הבאות כדי לעזור לך להבין טוב יותר את פעולות הקבצים ב- C ++:

  • דוגמה 1: פתח וסגור קובץ
  • דוגמה 2: כתוב לקובץ
  • דוגמה 3: קריאה מתוך קובץ
  • דוגמה 4: קרא וכתוב לקובץ
  • דוגמה 5: קרא וכתוב לקובץ בינארי

דוגמה 1: פתח וסגור קובץ

בתוכנית לדוגמה זו נדגים כיצד לפתוח/ליצור קובץ וכיצד לסגור את הקובץ ב- C ++. כפי שאתה יכול לראות בתוכנית שלהלן, כללנו את הספרייה הנדרשת לצורך פעולות קבצים.

כדי לפתוח ולסגור קובץ, אנו זקוקים לאובייקט של זרם. לאחר מכן, כדי לקרוא או לכתוב לקובץ, עלינו לפתוח את הקובץ. כללנו את קובץ הכותרת fstream בשורה מספר 1 כך שנוכל לגשת למחלקה של הזרם.

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

#לִכלוֹל

באמצעות מרחב שמותשעה (ות;

intרָאשִׁי()
{
ofstream myFile_Handler;

// קובץ פתוח
myFile_Handler.לִפְתוֹחַ('File_1.txt');

// סגור קובץ
myFile_Handler.סגור();
לַחֲזוֹר 0;
}

כעת, נאסוף את התוכנית ונבחן את הפלט. כפי שניתן לראות בחלון הפלט למטה, הקובץ File_1.txt נוצר לאחר ביצוע התוכנית. גודל הקובץ הוא אפס מכיוון שלא כתבנו שום תוכן בקובץ.

דוגמה 2: כתוב לקובץ

בתוכנית הקודמת לדוגמה, הראנו לך כיצד לפתוח קובץ וכיצד לסגור את הקובץ. כעת, נראה לך כיצד לכתוב משהו בקובץ.

אנו יכולים לכתוב לקובץ באמצעות אופרטור הכנסת הזרם, כלומר,<<. In this program, we have used the file handler and insertion operator to write two lines in the file. The insertion operator (<<) indicates that we are inserting the string into the output file stream object.

#לִכלוֹל

באמצעות מרחב שמותשעה (ות;

intרָאשִׁי()
{
ofstream myFile_Handler;
// קובץ פתוח
myFile_Handler.לִפְתוֹחַ('File_1.txt');

// כתוב לקובץ
myFile_Handler<< 'זהו קובץ בדיקה לדוגמה. ' <<endl;
myFile_Handler<< 'זו השורה השנייה של הקובץ. ' <<endl;

// סגור קובץ
myFile_Handler.סגור();
לַחֲזוֹר 0;
}

כעת, נרכיב את התוכנית לעיל ונבצע אותה. כפי שאתה יכול לראות להלן, כתבנו בהצלחה לקובץ File_1.txt.

דוגמה 3: קריאה מתוך קובץ

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

אנו משתמשים בפונקציה getline () כדי לקרוא את השורה המלאה מהקובץ ולאחר מכן להתייחס להדפסת השורה על הצג.

#לִכלוֹל
#לִכלוֹל
#לִכלוֹל

באמצעות מרחב שמותשעה (ות;

intרָאשִׁי()
{
ifstream myFile_Handler;
מחרוזת myLine;

// פתיחת קובץ במצב קריאה
myFile_Handler.לִפְתוֹחַ('File_1.txt');

אם(myFile_Handler.פתוח())
{
// המשיכו לקרוא את הקובץ
בזמן(getline(myFile_Handler, myLine))
{
// הדפס את השורה על הפלט הסטנדרטי
עֲלוּת <<השורה שלי<<endl;
}
// סגור קובץ
myFile_Handler.סגור();
}
אַחֵר
{
עֲלוּת << 'אין אפשרות לפתוח את הקובץ!';
}
לַחֲזוֹר 0;
}

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

דוגמה 4: קרא וכתוב לקובץ

עד כה, הראנו לך כיצד לפתוח, לקרוא, לכתוב ולסגור קובץ. ב- C ++, אנו יכולים גם לקרוא ולכתוב לקובץ בו זמנית. כדי לקרוא ולקרוא לקובץ, עלינו להשיג אובייקט fstream ולפתוח את הקובץ במצב ios :: in ו- ios :: out.

בדוגמה זו, אנו כותבים תחילה תוכן לקובץ. לאחר מכן, אנו קוראים את הנתונים מהקובץ ומדפיסים אותם לצג.

#לִכלוֹל
#לִכלוֹל
#לִכלוֹל

באמצעות מרחב שמותשעה (ות;

intרָאשִׁי()
{
fstream myFile_Handler;
מחרוזת myLine;

// קובץ פתוח
myFile_Handler.לִפְתוֹחַ('File_1.txt', ios::ב |ios::הַחוּצָה);

// בדוק אם הקובץ נפתח
אם(!myFile_Handler)
{
עֲלוּת << 'הקובץ לא נפתח!';
יְצִיאָה(1);
}

// כתוב לקובץ
myFile_Handler<< '1. זהו קובץ בדיקה נוסף לדוגמא. ' <<endl;
myFile_Handler<< '2. זוהי השורה השנייה של הקובץ. ' <<endl;

myFile_Handler.seekg(ios::לְהִתְחַנֵן);

// קרא את הקובץ
אם(myFile_Handler.פתוח())
{
// המשיכו לקרוא את הקובץ
בזמן(getline(myFile_Handler, myLine))
{
// הדפס את השורה על הפלט הסטנדרטי
עֲלוּת <<השורה שלי<<endl;
}

// סגור קובץ
myFile_Handler.סגור();
}
אַחֵר
{
עֲלוּת << 'אין אפשרות לפתוח את הקובץ!';
}
myFile_Handler.סגור();
לַחֲזוֹר 0;
}

כעת, נאסוף ונבצע את התוכנית.

דוגמה 5: קרא וכתוב לקובץ בינארי

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

#לִכלוֹל
#לִכלוֹל

באמצעות מרחב שמותשעה (ות;

מעמדעוֹבֵד
{
פּוּמְבֵּי:
intemp_id;
};

intרָאשִׁי()
{
ofstream binOutFile_Handler;
ifstream binInFile_Handler;

עובד empObj_W, empObj_R;

// קובץ פתוח
binOutFile_Handler.לִפְתוֹחַ('employee.dat', ios::הַחוּצָה |ios::בינארי);

// בדוק אם הקובץ נפתח
אם(!binOutFile_Handler)
{
עֲלוּת << 'הקובץ לא נפתח!';
יְצִיאָה(1);
}

// אתחל empObj_W
empObj_W.emp_id = 1512;

// כתוב לקובץ
binOutFile_Handler.לִכתוֹב((לְהַשְׁחִיר *) &empObj_W,מידה של(עוֹבֵד));
binOutFile_Handler.סגור();

אם(!binOutFile_Handler.טוֹב())
{
עֲלוּת << 'אירעה שגיאה בעת כתיבת הקובץ הבינארי!' <<endl;
יְצִיאָה(2);
}

// עכשיו, בואו לקרוא את הקובץ Employ.dat
binInFile_Handler.לִפְתוֹחַ('employee.dat', ios::ב |ios::בינארי);
// בדוק אם הקובץ נפתח
אם(!binInFile_Handler)
{
עֲלוּת << 'הקובץ לא נפתח!';
יְצִיאָה(3);
}

// קרא את תוכן הקובץ הבינארי
binInFile_Handler.לקרוא((לְהַשְׁחִיר *) &empObj_R,מידה של(עוֹבֵד));
binInFile_Handler.סגור();

אם(!binInFile_Handler.טוֹב())
{
עֲלוּת << 'אירעה שגיאה במהלך קריאת הקובץ הבינארי!' <<endl;
יְצִיאָה(4);
}

// הדפס את הפלט של empObj_R
עֲלוּת << 'פרטי העובד:' <<endl;
עֲלוּת << 'כרטיס עובד : ' <<empObj_R.emp_id <<endl;

לַחֲזוֹר 0;
}

סיכום

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