การเขียนไฟล์ด้วย ofstream
เขียนไฟล์ผลลัพธ์
การเขียนไฟล์ด้วย ofstream เป็นบทเรียน C++ Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน C++ Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน
ofstream คืออะไร
std::ofstream (สตรีมไฟล์ข้อมูลออก) ใช้เขียนข้อมูลลงในไฟล์ โดยทำงานคล้ายกับ std::cout แต่ปลายทางของมันคือไฟล์
#include <iostream>
#include <fstream>
int main() {
std::ofstream out("hello.txt");
out << "Hello, file!\n";
std::cout << "wrote file\n";
return 0;
}การเขียนข้อความ
ใช้ตัวดำเนินการ << เพื่อเขียนสตริงและตัวเลข เช่นเดียวกับการพิมพ์ไปยังคอนโซลทุกประการ
#include <iostream>
#include <fstream>
int main() {
std::ofstream out("report.txt");
out << "Score: " << 95 << '\n';
out << "Grade: A\n";
std::cout << "done\n";
return 0;
}ตัดเนื้อหาโดยค่าเริ่มต้น
การเปิดไฟล์ที่มีอยู่ด้วย ofstream จะลบเนื้อหาเดิมของไฟล์ การทำงานแต่ละครั้งจะเริ่มต้นด้วยไฟล์ว่าง
#include <iostream>
#include <fstream>
int main() {
std::ofstream("t.txt") << "old content\n";
std::ofstream out("t.txt");
out << "new content\n";
std::ifstream in("t.txt");
std::string line; std::getline(in, line);
std::cout << line << '\n';
return 0;
}การต่อท้ายด้วยโหมดต่อท้าย
ส่ง std::ios::app เพื่อเก็บเนื้อหาเดิมไว้และเพิ่มข้อมูลใหม่ต่อท้าย
#include <iostream>
#include <fstream>
int main() {
std::ofstream("log.txt") << "line1\n";
std::ofstream out("log.txt", std::ios::app);
out << "line2\n";
out.close();
std::ifstream in("log.txt");
std::string l; int n = 0;
while (std::getline(in, l)) ++n;
std::cout << n << " lines\n";
return 0;
}การตรวจสอบว่าการเขียนสำเร็จ
ทดสอบสตรีมหลังจากเปิดไฟล์ หากสตรีมอยู่ในสถานะ bad การเขียนจะล้มเหลวโดยไม่มีข้อความแจ้งเตือน
#include <iostream>
#include <fstream>
int main() {
std::ofstream out("ok.txt");
if (!out) {
std::cout << "failed to open\n";
return 1;
}
out << "safe write\n";
std::cout << "write ok\n";
return 0;
}การเขียนตัวเลขและการจัดรูปแบบ
ตัวจัดรูปแบบการรับส่งข้อมูล เช่น std::fixed และ std::setprecision สามารถใช้กับสตรีมไฟล์ได้เช่นกัน
#include <iostream>
#include <fstream>
#include <iomanip>
int main() {
std::ofstream out("pi.txt");
out << std::fixed << std::setprecision(3) << 3.14159 << '\n';
out.close();
std::ifstream in("pi.txt");
std::string s; in >> s;
std::cout << s << '\n';
return 0;
}การเขียนข้อมูลแบบวนรอบ
เขียนหลายบรรทัดด้วยการวนรอบ ในแต่ละรอบจะส่งระเบียนหนึ่งรายการไปยังไฟล์
#include <iostream>
#include <fstream>
int main() {
std::ofstream out("squares.txt");
for (int i = 1; i <= 5; ++i) out << i << ' ' << i * i << '\n';
out.close();
std::cout << "wrote 5 rows\n";
return 0;
}การส่งบัฟเฟอร์ออก
ข้อมูลออกจะถูกเก็บไว้ในบัฟเฟอร์ std::flush หรือ std::endl จะบังคับให้ส่งบัฟเฟอร์ลงดิสก์ทันที และการปิดก็จะส่งบัฟเฟอร์ออกเช่นกัน
#include <iostream>
#include <fstream>
int main() {
std::ofstream out("flush.txt");
out << "important" << std::flush;
std::cout << "flushed to disk\n";
return 0;
}การสิ้นสุดบรรทัดเทียบกับการขึ้นบรรทัดใหม่
'\n' เพียงเพิ่มอักขระขึ้นบรรทัดใหม่ ส่วน std::endl จะเพิ่มอักขระขึ้นบรรทัดใหม่และส่งบัฟเฟอร์ออก ซึ่งช้ากว่าเมื่อใช้ในลูปที่ทำงานถี่
#include <iostream>
#include <fstream>
int main() {
std::ofstream out("nl.txt");
out << "fast\n"; // newline only
out << "slow" << std::endl; // newline + flush
std::cout << "both written\n";
return 0;
}การเขียนแล้วอ่านกลับ
รูปแบบที่ใช้กันทั่วไปคือ เขียนข้อมูล ปิดไฟล์ แล้วเปิดไฟล์ใหม่เพื่ออ่านข้อมูลกลับ
#include <iostream>
#include <fstream>
int main() {
{
std::ofstream out("rt.txt");
out << 7 << ' ' << 8 << '\n';
}
std::ifstream in("rt.txt");
int a, b; in >> a >> b;
std::cout << a + b << '\n';
return 0;
}การเลือกโหมดการเปิด
รวมแฟล็กด้วย | โหมดที่ใช้บ่อย ได้แก่ ios::out (ค่าเริ่มต้น), ios::app (ต่อท้าย) และ ios::trunc (ลบเนื้อหา)
#include <iostream>
#include <fstream>
int main() {
std::ofstream out("modes.txt", std::ios::out | std::ios::trunc);
out << "fresh\n";
std::cout << "opened with explicit modes\n";
return 0;
}ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับโหมดของ ofstream
ทบทวน
คุณได้เรียนรู้ว่า std::ofstream:
- เขียนข้อมูลด้วย
<<และตัดเนื้อหาโดยค่าเริ่มต้น - ต่อท้ายด้วย
std::ios::app - เก็บข้อมูลออกไว้ในบัฟเฟอร์ โดย
std::flush/std::endl/การปิดไฟล์จะส่งข้อมูลลงดิสก์
ถัดไป คุณจะได้จัดการไบต์ดิบด้วยการรับส่งข้อมูลไฟล์ไบนารี
คำถามที่พบบ่อย
บทเรียน “การเขียนไฟล์ด้วย ofstream” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเขียนไฟล์ด้วย ofstream” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส C++ Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส C++ Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเขียนไฟล์ด้วย ofstream”
เขียนไฟล์ผลลัพธ์ คุณปฏิบัติ C++ Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน C++ Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน C++ Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การเขียนไฟล์ด้วย ofstream” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน C++ Academy นี้ได้ไหม
ได้ บทเรียน C++ Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การอ่านไฟล์ด้วย ifstream
- การเขียนไฟล์ด้วย ofstream
- อินพุต/เอาต์พุตไฟล์ไบนารี
- การจัดการข้อผิดพลาดและสถานะ