ในบทความนี้ เราจะอธิบายไวยากรณ์ พารามิเตอร์ คืนค่า และการทำงานของ snprintf() ฟังก์ชันในภาษา C++ เราสามารถค้นพบความเข้าใจที่สมบูรณ์ของ snprintf() ในคู่มือนี้
snprintf() ใน C++ คืออะไร
ใน C ++ snprintf() เป็นฟังก์ชันที่ใช้ในการจัดรูปแบบหรือจัดเก็บชุดอักขระและค่าสตริงที่เขียนไปยังบัฟเฟอร์ มันทำงานคล้ายกับ sprintf() ฟังก์ชัน แต่มีความสามารถในการเอาชนะบัฟเฟอร์ล้น เดอะ
ด้านล่างนี้คือไวยากรณ์ที่จะใช้ snprintf() ฟังก์ชั่นใน C ++:
snprintf ( ถ่าน * กันชน, size_t buf_size, คอสต์ ถ่าน * รูปแบบ, ... ) ;
เมื่อเขียนอักขระแล้ว อักขระ null ที่ลงท้ายจะถูกแทรก ถ้า MAX_BUFSIZE เป็นศูนย์ จะไม่มีการเก็บข้อมูลใดๆ และบัฟเฟอร์อาจทำหน้าที่เป็นตัวชี้ว่าง
พารามิเตอร์ของ snprintf()
ต่อไปนี้เป็นพารามิเตอร์ที่ใช้ใน snprintf() การทำงาน.
- กันชน : ตัวชี้ไปยังบัฟเฟอร์สตริงที่เอาต์พุตจะถูกเขียน
- buf_size : MAX_BUFSIZE-1 คือจำนวนอักขระสูงสุดที่สามารถเขียนไปยังบัฟเฟอร์
- รูปแบบ : สตริงที่สิ้นสุดด้วยค่า null ถูกเขียนไปยังสตรีมไฟล์เป็นตัวชี้ ประกอบด้วยอักขระและตัวระบุรูปแบบที่เป็นไปได้ที่ขึ้นต้นด้วย % ค่าของตัวแปรที่ตามหลังสตริงรูปแบบจะแทนที่ตัวระบุรูปแบบ
- (ข้อโต้แย้งเพิ่มเติม) : ขึ้นอยู่กับชนิดของสตริงรูปแบบ ฟังก์ชันอาจต้องการรายการอาร์กิวเมนต์เพิ่มเติม ซึ่งทั้งหมดมีค่าที่ใช้แทนตัวระบุรูปแบบในรูปแบบของสตริง (หรือสำหรับ MAX_BUFSIZE ตัวชี้ไปยังตำแหน่งที่จัดเก็บ) .
ควรมีพารามิเตอร์อย่างน้อยมากเท่ากับค่าของตัวระบุรูปแบบ ฟังก์ชันละเว้นอาร์กิวเมนต์เพิ่มเติมใดๆ
snprintf() ส่งคืนอะไร
หากฟังก์ชันทำงานสำเร็จ ฟังก์ชันจะส่งคืนจำนวนอักขระที่จะพิจารณาว่าเขียนสำหรับบัฟเฟอร์ขนาดใหญ่ที่เหมาะสม โดยไม่รวมอักขระ null ที่สิ้นสุด เมื่อล้มเหลวจะให้ค่าเป็นลบ เอาต์พุตจะถือว่าเขียนสมบูรณ์ก็ต่อเมื่อค่าที่ส่งคืนไม่เป็นค่าลบและมีขนาดเล็กกว่า MAX_BUFSIZE
วิธีใช้ snprintf() ใน C++
นี่คือตัวอย่างการใช้ snprintf() ใน C++:
ตัวอย่าง
#รวม#รวมถึง
โดยใช้ เนมสเปซ มาตรฐาน ;
นานาชาติ หลัก ( )
{
ถ่าน buff_size [ 60 ] ;
นานาชาติ return_Value, MAX_BUFSIZE = 60 ;
ถ่าน สตริง [ ] = 'ลินุกซ์' ;
นานาชาติ บทความ = สี่ห้า ;
return_Value = snprintf ( buff_size, MAX_BUFSIZE, 'สวัสดีผู้ใช้ %s มาอ่าน %d บทความเกี่ยวกับ bash' ,str,บทความ ) ;
ถ้า ( return_Value > 0 && return_Value < MAX_BUFSIZE )
{
ศาล << buff_size << จบ ;
ศาล << 'จำนวนตัวอักษรที่เขียน = ' << return_Value << จบ ;
}
อื่น
ศาล << 'เกิดข้อผิดพลาดในการเขียนไปยังบัฟเฟอร์' << จบ ;
กลับ 0 ;
}
ในโค้ดข้างต้น เรากำหนดขนาดสูงสุดของบัฟเฟอร์เป็น 60 หมายความว่าโค้ดจะรับอักขระได้ไม่เกิน 60 เราได้ใช้ snprintf() ฟังก์ชันส่งออกสตริงที่มีอักขระ 56 ตัวและจะแสดงที่เทอร์มินัลเอาต์พุต ในกรณีที่ตัวอักษรที่คุณป้อนมากกว่า 60 โปรแกรมจะผ่านข้อผิดพลาด
บทสรุป
เราได้สาธิตต้นแบบ พารามิเตอร์ คืนค่า และการทำงานของ C++ snprintf() ฟังก์ชันที่เขียนสตริงที่จัดรูปแบบไปยังบัฟเฟอร์สตริงอักขระ เราอธิบายตัวอย่างด้วยความเข้าใจอย่างถ่องแท้ snprintf() ในคู่มือนี้