0Pricing
C++ Academy · บทเรียน

การเขียนไฟล์ด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การอ่านไฟล์ด้วย ifstream
  2. การเขียนไฟล์ด้วย ofstream
  3. อินพุต/เอาต์พุตไฟล์ไบนารี
  4. การจัดการข้อผิดพลาดและสถานะ
← กลับไปที่ C++ Academy