เนื่องจากตอนนี้กลับมาเขียน C++ เป็นหลัก จึงอยากเขียนหลายๆ อย่างให้อยู่ในรูปของอ็อบเจกต์ด้วย จึงหาไลบรารีมาใช้งาน ที่สนใจตอนนี้คือไลบรารีเรื่องของวันและเวลาจากชุดไลบรารีของ boost ซึ่งชุดไลบรารีของ boost เองหลายชุดได้กลายเป็นแม่แบบมารตฐาน C++11 ด้วย สำหรับตอนนี้สนใจเรื่องเกี่ยบกับเวลา เราอาจจะเลือกใช้ ctime ได้แต่อาจจะอยู่ในรูปปของฟังก์ชันและพอยน์เตอร์ หรือ tm struct แต่การใช้ tm struct เราอาจจะต้องมาจัดการเรืองของช่วงเวลาเอง อาจจะยุ่งยากเล็กน้อย ลองมาดูไลบรารี date_time ของ boost กันดีกว่า
นี่เป็นตัวอย่างการใช้ ptime หรือ posix time นั้นเอง เราสามารถสร้างอ็อบเจกต์ของ ptime ได้หลายวิธี แต่ในตัวอย่างใช้วิธีการใช้นาฬิการะบบ หากต้องการเก็บเวลาในระดับ microsec ก็สามารถสร้างได้ดังตัวอย่างคือ boost::posix_time::microsec_clock::local_time(); นอกจากนี้เราสามารถใช้ในหน่วยวินาทีได้เช่นกันโดยใช้ boost::posix_time::second_clock ตามต้องการ ทดลองคอมไพล์และรันดู
ตัวอ็อบเจกต์ของ ptime เองอาจจะทำอะไรไม่ได้มากเนื่องจากมีคุณสมบัติ immutable และมีพื้นฐานอยู่บน gregorian::date อีกทีนึง การใช้งานข้อมูลต่างๆ สามารถทำได้จากอ็อบเจกต์ของ time_duration แทนผ่านทาง time_of_day() เราสามารถเข้าถึงค่าเวลาต่างๆ ได้จากอ็อบเจกต์นี้ นอกจากนี้ ptime ยังสามารถแปลงเป็น struct tm ได้อีกด้วยผ่านทาง tm to_tm(ptime); จากตัวอย่างที่ได้แสดงไว้นี้เป็นการเอาอ็อบเจกต์ของ time_duration มาลบกันเพื่อหาว่าเวลาปัจจุบันต่างจากเวลาเริ่มต้นไปเท่าไหร่แล้ว เราสามารถนำมาลบกันได้อย่างง่ายดายไม่จำเป็นต้องแปลงจากชั่วโมงหรือนาทีให้อยู่ในรูปของวินาทีเองแล้วค่อยลบกัน :D
วันอังคารที่ 20 กันยายน พ.ศ. 2554
ชุดไลบรารี date_time ของ Boost
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)


0 ความคิดเห็น:
แสดงความคิดเห็น