Just another WordPress.com site

ถ้าเราต้องการให้ C++ เขียน text file ให้เรา เราจะต้องสร้าง object ใน class ofstream (อ่านว่า output-file-stream) ขึ้นมาก่อน class นี้จะอยู่ในไลบรารี fstream ครับ สมมติว่าผมการการสร้างไฟล์ที่ชื่อว่า score.txt มันจะเขียนโค้ดได้แบบนี้ครับ

คำสั่ง ios::out เป็นการบอกว่าเราสามารถเปลี่ยนแปลงข้อมูลในไฟล์ได้ครับ

ในการสร้างไฟล์เราจะเรียก method ที่ชื่อว่า open ของ class ofstream ก็ได้นะครับ ซึ่งถ้าเราใช้วิธีนี้ เมื่อเราจัดการเกี่ยวกับไฟล์เสร็จแล้วควรจะสั่งปิดไฟล์ ด้วยคำสั่ง close รูปแบบจะเป็นดังนี้ครับ

เมื่อทำการรันดูเราก็จะพบไฟล์ score.txt ใน directory เดียวกันกับ dirctory ของไฟล์ C++ ที่เราทำการรัน

ต่อไปเราจะลองมาเขียนอะไรบางอย่างในไฟล์นี้กันครับ การเขียนข้อมูลลงในไฟล์ก็ใช้รูปแบบเดียวกันกับ cout เลยครับ

เมื่อทำการรันโปรแกรม แล้วเปิดข้อมูลในไฟล์ score.txt ดู เราก็จะพบสิ่งที่เราพิมพ์ครับ

สมมติว่าผมต้องการรับข้อมูลผ่านทาง teminal โดยข้อมูลที่จะเขียนประกอบด้วย ชื่อนักเรียนกับคะแนน โดยในไฟล์พิมพ์ชื่อ แล้วตามด้วยการเคาะ tab (‘\t’) แล้วพิมพ์คะแนน แล้วขึ้นบรรทัดใหม่ (‘\n’) เราสามารถเขียนโปรแกรมได้ดังนี้ครับ

คำสั่ง cin>>name>>score จะให้ค่าเป็น false เมื่อผู้ใช้กด crtl+d สำหรับ unix หรือ crtl+z สำหรับ window

เมื่อลองทำการรันดูโดยกรอกข้อมูลดังนี้

เมื่อทำการดับเบิลคลิ๊กดูข้อมูลใน score.txt เราก็จะข้อมูลดังนี้ครับ

ทีนี้สมมติว่าเราต้องการเขียนไฟล์ score.txt บนคนละ directory กับไฟล์ C++ ล่ะ

สมมติว่าผมสร้าง folder ที่ชื่อว่า doc ขึ้นมาบน desktop

ผมต้องการให้ไฟล์ที่ชื่อ score.txt อยู่ใน folder นี้ ผมต้อง set path ให้กับให้กับมันด้วย

วิธีการทำคือให้เข้าไปใน directory ของ doc โดยใช้คำสั่ง cd doc (cd มาจากคำว่า change directory)

แล้วใช้คำสั่ง pwd (pwd มาจากคำว่า present working directory) เราก็จะเห็น path ของ doc

เราจะแก้ไขส่วน path ดังในรูป

เมื่อทำการรันดูเราจะได้ไฟล์ score.txt ใน folder doc แล้วล่ะครับ

ทีนี้มาถึงการอ่านไฟล์กันบ้างครับสมมติว่าไฟล์ที่เราต้องการอ่าน คือ score.txt อยู่ใน directory เดียวกันกับไฟล์ C++ ที่เราจะเขียน

การทำจะทำคล้ายกับการเขียนไฟล์ครับ โดยเริ่มต้นเราจะต้องสร้าง object ใน class ifstream ซึ่ง class นี้จะอยู่ในไลบรารี fstream เช่นกันครับ แล้วจึงจะทำการอ่านไฟล์ได้ครับ

คำสั่ง ios::in เป็นการบอกว่าไฟล์นี้เราจะอ่านอย่างเดียวเท่านั้น ส่วนที่ผมสั่ง readFile>> name >>score นั้น ถ้าข้อมูลในไฟล์ถูกอ่านหมดแล้วมันจะให้ค่าเป็น false ครับ ถ้ายังมีข้อมูลที่ยังอ่านไม่หมดมันให้ค่าเป็น true

เมื่อผมลองรันดูจะไดผลลัพธ์ประมาณนี้ครับ

หมายเหตุ เราอาจจะเขียนโค้ดในบรรทัดที่ 8 เป็นแบบนี้ก็ได้นะครับ

และถ้าหากไฟล์ที่เราจะอ่านอยู่คนละ diectory กับไฟล์ C++ เราก็จะต้องทำการ set path ให้ถูกต้องนะครับ โปรแกรมเราถึงจะทำการอ่านไฟล์ได้

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: