C++ การจัดการไฟล์: วิธีเปิด เขียน อ่าน ปิดไฟล์ C++
การจัดการไฟล์คืออะไร C++?
ไฟล์จะเก็บข้อมูลอย่างถาวรในอุปกรณ์จัดเก็บข้อมูล ด้วยการจัดการไฟล์ ผลลัพธ์จากโปรแกรมจะถูกเก็บไว้ในไฟล์ สามารถดำเนินการต่างๆ กับข้อมูลได้ในขณะที่อยู่ในไฟล์
สตรีมคือการแยกอุปกรณ์ที่ดำเนินการอินพุต/เอาต์พุต คุณสามารถแสดงสตรีมเป็นปลายทางหรือแหล่งที่มาของอักขระที่มีความยาวไม่แน่นอนก็ได้ ซึ่งจะถูกกำหนดโดยการใช้งาน C++ ให้ไลบรารีที่มาพร้อมกับวิธีการจัดการไฟล์แก่คุณ ให้เราหารือเกี่ยวกับมัน
ห้องสมุด fstream
ห้องสมุด fstream จัดให้ C++ โปรแกรมเมอร์ที่มีสามคลาสสำหรับการทำงานกับไฟล์ ชั้นเรียนเหล่านี้รวมถึง:
- ของกระแส– คลาสนี้แสดงถึงกระแสเอาต์พุต ใช้สำหรับสร้างไฟล์และเขียนข้อมูลลงไฟล์
- ถ้าสตรีม– คลาสนี้แสดงถึงสตรีมอินพุต ใช้สำหรับอ่านข้อมูลจากไฟล์ข้อมูล
- สตรีม– โดยทั่วไปคลาสนี้แสดงถึงสตรีมไฟล์ มันมาพร้อมกับความสามารถ ofstream/ifstream ซึ่งหมายความว่าสามารถสร้างไฟล์ เขียนไฟล์ อ่านจากไฟล์ข้อมูลได้
ภาพต่อไปนี้ทำให้เข้าใจได้ง่าย:
หากต้องการใช้คลาสข้างต้นของไลบรารี fstream คุณต้องรวมคลาสดังกล่าวไว้ในโปรแกรมของคุณเป็นไฟล์ส่วนหัว แน่นอน คุณจะใช้คำสั่ง #include preprocessor คุณต้องรวมไฟล์ส่วนหัว iostream ด้วย
วิธีการเปิดไฟล์
ก่อนจะดำเนินการใดๆ กับไฟล์ คุณต้องเปิดไฟล์เสียก่อน หากต้องการเขียนลงในไฟล์ ให้เปิดโดยใช้วัตถุ fstream หรือ ofstream หากคุณต้องการอ่านจากไฟล์เท่านั้น ให้เปิดโดยใช้วัตถุ ifstream
ออบเจ็กต์ทั้งสามรายการ ได้แก่ fstream, ofstream และ ifstream มีฟังก์ชัน open() ที่กำหนดไว้ในวัตถุเหล่านั้น ฟังก์ชันใช้ไวยากรณ์นี้:
open (file_name, mode);
- พารามิเตอร์ file_name หมายถึงชื่อของไฟล์ที่จะเปิด
- พารามิเตอร์โหมดเป็นทางเลือก สามารถรับค่าใด ๆ ต่อไปนี้ได้:
ความคุ้มค่า | Descriptไอออน |
---|---|
ios::แอพ | โหมดผนวก ผลลัพธ์ที่ส่งไปยังไฟล์จะถูกต่อท้าย |
ios::กิน | โดยจะเปิดไฟล์สำหรับเอาต์พุต จากนั้นจะย้ายการควบคุมการอ่านและเขียนไปยังจุดสิ้นสุดของไฟล์ |
iOS::ใน | มันเปิดไฟล์เพื่ออ่าน |
ios::ออก | มันเปิดไฟล์เพื่อเขียน |
ios::trunc | หากมีไฟล์อยู่ องค์ประกอบไฟล์ควรถูกตัดทอนก่อนที่จะเปิด |
สามารถใช้สองโหมดพร้อมกันได้ โดยใช้ตัวดำเนินการ | (OR)
1 ตัวอย่าง:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file.close(); } return 0; }
Output:
นี่คือภาพหน้าจอของรหัส:
คำอธิบายรหัส:
- รวมไฟล์ส่วนหัว iostream ไว้ในโปรแกรมเพื่อใช้ฟังก์ชันต่างๆ
- รวมไฟล์ส่วนหัว fstream ไว้ในโปรแกรมเพื่อใช้คลาสของมัน
- รวมเนมสเปซมาตรฐานไว้ในโค้ดของเราเพื่อใช้คลาสโดยไม่ต้องเรียกมัน
- เรียกใช้ฟังก์ชัน main() ตรรกะของโปรแกรมควรอยู่ภายในร่างกาย
- สร้างวัตถุของคลาส fstream และตั้งชื่อ my_file
- ใช้ฟังก์ชัน open() กับวัตถุด้านบนเพื่อสร้างไฟล์ใหม่ โหมดออกช่วยให้เราสามารถเขียนลงในไฟล์ได้
- ใช้คำสั่ง if เพื่อตรวจสอบว่าการสร้างไฟล์ล้มเหลวหรือไม่
- ข้อความให้พิมพ์บนคอนโซลหากไฟล์ไม่ได้ถูกสร้างขึ้น
- ส่วนท้ายของคำสั่ง if
- ใช้คำสั่ง else เพื่อระบุว่าต้องทำอย่างไรหากไฟล์ถูกสร้างขึ้น
- ข้อความที่จะพิมพ์บนคอนโซลหากไฟล์ถูกสร้างขึ้น
- ใช้ฟังก์ชัน close() กับวัตถุเพื่อปิดไฟล์
- ส่วนท้ายของคำสั่ง else
- โปรแกรมจะต้องคืนค่าหากดำเนินการสำเร็จ
- จุดสิ้นสุดของเนื้อหาฟังก์ชัน main()
วิธีปิดไฟล์
ครั้งเดียว C++ โครงการ สิ้นสุดลงโดยอัตโนมัติ
- ชำระล้างกระแสน้ำ
- ปล่อยหน่วยความจำที่จัดสรรไว้
- ปิดไฟล์ที่เปิดอยู่
อย่างไรก็ตาม ในฐานะโปรแกรมเมอร์ คุณควรเรียนรู้ที่จะปิดไฟล์ที่เปิดอยู่ก่อนที่โปรแกรมจะยุติลง
วัตถุ fstream, ofstream และ ifstream มีฟังก์ชัน close() สำหรับการปิดไฟล์ ฟังก์ชันใช้ไวยากรณ์นี้:
void close();
วิธีเขียนลงไฟล์
คุณสามารถเขียนลงไฟล์ได้จากไฟล์ของคุณ C++ โปรแกรม คุณใช้ตัวดำเนินการแทรกสตรีม (<<) สำหรับสิ่งนี้ ข้อความที่จะเขียนลงในไฟล์ควรอยู่ในเครื่องหมายคำพูดคู่
ให้เราสาธิตสิ่งนี้
2 ตัวอย่าง:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::out); if (!my_file) { cout << "File not created!"; } else { cout << "File created successfully!"; my_file << "Guru99"; my_file.close(); } return 0; }
Output:
นี่คือภาพหน้าจอของรหัส:
คำอธิบายรหัส:
- รวมไฟล์ส่วนหัว iostream ไว้ในโปรแกรมเพื่อใช้ฟังก์ชันต่างๆ
- รวมไฟล์ส่วนหัว fstream ไว้ในโปรแกรมเพื่อใช้คลาสของมัน
- รวมเนมสเปซมาตรฐานในโปรแกรมเพื่อใช้คลาสโดยไม่ต้องเรียกมัน
- เรียกใช้ฟังก์ชัน main() ควรเพิ่มตรรกะของโปรแกรมภายในเนื้อหาของฟังก์ชันนี้
- สร้างอินสแตนซ์ของคลาส fstream และตั้งชื่อ my_file
- ใช้ฟังก์ชัน open() เพื่อสร้างไฟล์ใหม่ชื่อ my_file.txt ไฟล์จะถูกเปิดในโหมดออกเพื่อเขียนลงไป
- ใช้คำสั่ง if เพื่อตรวจสอบว่าไฟล์ไม่ได้ถูกเปิดหรือไม่
- ข้อความที่จะพิมพ์บนคอนโซลหากไม่ได้เปิดไฟล์
- ส่วนท้ายของคำสั่ง if
- ใช้คำสั่ง else เพื่อระบุว่าต้องทำอย่างไรหากไฟล์ถูกสร้างขึ้น
- ข้อความที่จะพิมพ์บนคอนโซลหากไฟล์ถูกสร้างขึ้น
- เขียนข้อความลงในไฟล์ที่สร้างขึ้น
- ใช้ฟังก์ชัน close() เพื่อปิดไฟล์
- ส่วนท้ายของคำสั่ง else
- โปรแกรมจะต้องคืนค่าเมื่อเสร็จสิ้นสำเร็จ
- ส่วนท้ายของฟังก์ชัน main()
วิธีอ่านจากไฟล์
คุณสามารถอ่านข้อมูลจากไฟล์ของคุณลงใน C++ โปรแกรม ทำได้โดยใช้ตัวดำเนินการแยกสตรีม (>>) คุณใช้ตัวดำเนินการในลักษณะเดียวกับที่คุณใช้อ่านอินพุตของผู้ใช้จากแป้นพิมพ์ อย่างไรก็ตาม แทนที่จะใช้วัตถุ cin คุณจะใช้วัตถุ ifstream/fstream
3 ตัวอย่าง:
#include <iostream> #include <fstream> using namespace std; int main() { fstream my_file; my_file.open("my_file.txt", ios::in); if (!my_file) { cout << "No such file"; } else { char ch; while (1) { my_file >> ch; if (my_file.eof()) break; cout << ch; } } my_file.close(); return 0; }
Output:
ไม่มีไฟล์ดังกล่าว
นี่คือภาพหน้าจอของรหัส:
คำอธิบายรหัส:
- รวมไฟล์ส่วนหัว iostream ไว้ในโปรแกรมเพื่อใช้ฟังก์ชันต่างๆ
- รวมไฟล์ส่วนหัว fstream ไว้ในโปรแกรมเพื่อใช้คลาสของมัน
- รวมเนมสเปซมาตรฐานในโปรแกรมเพื่อใช้คลาสโดยไม่ต้องเรียกมัน
- เรียกใช้ฟังก์ชัน main() ควรเพิ่มตรรกะของโปรแกรมภายในเนื้อหาของฟังก์ชันนี้
- สร้างอินสแตนซ์ของคลาส fstream และตั้งชื่อ my_file
- ใช้ฟังก์ชัน open() เพื่อสร้างไฟล์ใหม่ชื่อ my_file.txt ไฟล์จะถูกเปิดในโหมดอินเพื่ออ่านจากไฟล์
- ใช้คำสั่ง if เพื่อตรวจสอบว่าไม่มีไฟล์อยู่หรือไม่
- ข้อความที่จะพิมพ์บนคอนโซลหากไม่พบไฟล์
- ส่วนท้ายของคำสั่ง if
- ใช้คำสั่ง else เพื่อระบุว่าต้องทำอย่างไรหากพบไฟล์ดังกล่าว
- สร้าง ตัวแปรถ่าน ชื่อช.
- สร้าง ในขณะที่วนซ้ำ สำหรับการวนซ้ำเนื้อหาไฟล์
- เขียน/จัดเก็บเนื้อหาของไฟล์ในตัวแปร ch
- ใช้ฟังก์ชัน if Condition และ eof() ซึ่งก็คือส่วนท้ายของไฟล์ เพื่อให้แน่ใจว่าคอมไพลเลอร์จะอ่านจากไฟล์ต่อไปหากไปไม่ถึงจุดสิ้นสุด
- ใช้คำสั่งแบ่งเพื่อหยุดการอ่านจากไฟล์เมื่อถึงจุดสิ้นสุด
- พิมพ์เนื้อหาของตัวแปร ch บนคอนโซล
- สิ้นสุดในขณะที่ร่างกาย
- ส่วนท้ายของคำสั่ง else
- เรียกใช้ฟังก์ชัน close() เพื่อปิดไฟล์
- โปรแกรมจะต้องคืนค่าเมื่อเสร็จสิ้นสำเร็จ
- ส่วนท้ายของฟังก์ชัน main()
สรุป
- ด้วยการจัดการไฟล์ ผลลัพธ์ของโปรแกรมสามารถส่งและจัดเก็บไว้ในไฟล์ได้
- สามารถดำเนินการหลายอย่างกับข้อมูลในขณะที่อยู่ในไฟล์ได้
- สตรีมเป็นการแยกส่วนที่แสดงถึงอุปกรณ์ที่ใช้ดำเนินการอินพุต/เอาต์พุต
- สตรีมสามารถแสดงเป็นปลายทางหรือแหล่งที่มาของอักขระที่มีความยาวไม่ จำกัด
- ห้องสมุด fstream จัดให้ C++ โปรแกรมเมอร์พร้อมวิธีการจัดการไฟล์
- หากต้องการใช้ไลบรารี คุณต้องรวมไว้ในโปรแกรมของคุณโดยใช้คำสั่ง #include preprocessor