ถ้าเราต้องการให้ C++ เขียน text file ให้เรา เราจะต้องสร้าง object ใน class ofstream (อ่านว่า output-file-stream) ขึ้นมาก่อน class นี้จะอยู่ในไลบรารี fstream ครับ สมมติว่าผมการการสร้างไฟล์ที่ชื่อว่า score.txt มันจะเขียนโค้ดได้แบบนี้ครับ
ในการสร้างไฟล์เราจะเรียก method ที่ชื่อว่า open ของ class ofstream ก็ได้นะครับ ซึ่งถ้าเราใช้วิธีนี้ เมื่อเราจัดการเกี่ยวกับไฟล์เสร็จแล้วควรจะสั่งปิดไฟล์ ด้วยคำสั่ง close รูปแบบจะเป็นดังนี้ครับ
เมื่อทำการรันดูเราก็จะพบไฟล์ score.txt ใน directory เดียวกันกับ dirctory ของไฟล์ C++ ที่เราทำการรัน
REPORT THIS AD
ต่อไปเราจะลองมาเขียนอะไรบางอย่างในไฟล์นี้กันครับ การเขียนข้อมูลลงในไฟล์ก็ใช้รูปแบบเดียวกันกับ cout เลยครับ
สมมติว่าผมต้องการรับข้อมูลผ่านทาง teminal โดยข้อมูลที่จะเขียนประกอบด้วย ชื่อนักเรียนกับคะแนน โดยในไฟล์พิมพ์ชื่อ แล้วตามด้วยการเคาะ tab (‘\t’) แล้วพิมพ์คะแนน แล้วขึ้นบรรทัดใหม่ (‘\n’) เราสามารถเขียนโปรแกรมได้ดังนี้ครับ
REPORT THIS AD
คำสั่ง cin>>name>>score จะให้ค่าเป็น false เมื่อผู้ใช้กด crtl+d สำหรับ unix หรือ crtl+z สำหรับ window
เมื่อลองทำการรันดูโดยกรอกข้อมูลดังนี้
ทีนี้สมมติว่าเราต้องการเขียนไฟล์ score.txt บนคนละ directory กับไฟล์ C++ ล่ะ
สมมติว่าผมสร้าง folder ที่ชื่อว่า doc ขึ้นมาบน desktop
วิธีการทำคือให้เข้าไปใน directory ของ doc โดยใช้คำสั่ง cd doc (cd มาจากคำว่า change directory)
แล้วใช้คำสั่ง pwd (pwd มาจากคำว่า present working directory) เราก็จะเห็น path ของ doc
ทีนี้มาถึงการอ่านไฟล์กันบ้างครับสมมติว่าไฟล์ที่เราต้องการอ่าน คือ score.txt อยู่ใน directory เดียวกันกับไฟล์ C++ ที่เราจะเขียน
การทำจะทำคล้ายกับการเขียนไฟล์ครับ โดยเริ่มต้นเราจะต้องสร้าง object ใน class ifstream ซึ่ง class นี้จะอยู่ในไลบรารี fstream เช่นกันครับ แล้วจึงจะทำการอ่านไฟล์ได้ครับ
คำสั่ง ios::in เป็นการบอกว่าไฟล์นี้เราจะอ่านอย่างเดียวเท่านั้น ส่วนที่ผมสั่ง readFile>> name >>score นั้น ถ้าข้อมูลในไฟล์ถูกอ่านหมดแล้วมันจะให้ค่าเป็น false ครับ ถ้ายังมีข้อมูลที่ยังอ่านไม่หมดมันให้ค่าเป็น true
REPORT THIS AD
เมื่อผมลองรันดูจะไดผลลัพธ์ประมาณนี้ครับ
และถ้าหากไฟล์ที่เราจะอ่านอยู่คนละ diectory กับไฟล์ C++ เราก็จะต้องทำการ set path ให้ถูกต้องนะครับ โปรแกรมเราถึงจะทำการอ่านไฟล์ได้