สามารถพิมพ์ตัวอักษรซ้ำหลายครั้งได้อย่างง่ายดายด้วยคอนสตรัคเตอร์ของคลาส std::string โดยไม่ต้องใช้ลูป Recursion หรือ Goto
หลักการ
std::string มีคอนสตรัคเตอร์ที่รับพารามิเตอร์ 2 ค่า:
string(count, character)
count: จำนวนครั้งที่ต้องการซ้ำcharacter: ตัวอักษรที่ต้องการพิมพ์
ตัวอย่างโค้ด
#include <iostream>
#include <string>
using namespace std;
void printCharNTimes(char ch, int count) {
if (count > 0) {
cout << string(count, ch) << endl;
}
}
int main() {
// พิมพ์ 'B' 10 ครั้ง
printCharNTimes('B', 10);
// พิมพ์ 'x' 30 ครั้ง
printCharNTimes('x', 30);
// ตัวอย่างเพิ่มเติม: สร้างเส้นคั่น
cout << string(50, '-') << endl;
cout << "Header" << endl;
cout << string(50, '-') << endl;
return 0;
}
ผลลัพธ์
BBBBBBBBBB xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx -------------------------------------------------- Header --------------------------------------------------
การประยุกต์ใช้เพิ่มเติม
// สร้างสตริงซ้ำหลายรูปแบบ string spaces(10, ' '); // เว้นวรรค 10 ช่อง string stars(5, '*'); // ดาว 5 ดวง string line(80, '='); // เส้นคั่นยาว 80 ตัว // ใช้กับอักขระหลายไบต์ (ต้องระวัง encoding) string thai(3, 'า'); // สระอา 3 ตัว (อาจไม่ทำงานถ้าต้องการพิมพ์ "ซ้ำ 3 ตัวอักษร")
ข้อดีของวิธีนี้
- กระชับ: เขียนได้ในบรรทัดเดียว
- ประสิทธิภาพ: ถูก optimize ดีในไลบรารีมาตรฐาน
- อ่านง่าย: แสดงเจตนาชัดเจน
- ปลอดภัย: ไม่มีความเสี่ยง infinite loop
ข้อจำกัด
ใช้ได้เฉพาะตัวอักษรเดี่ยว (single character) หากต้องการพิมพ์สตริงซ้ำ ต้องใช้วิธีอื่น เช่น ลูปหรือ std::string join