이 글에서는 C++에서 반복문(loop), 재귀(recursion), goto를 사용하지 않고 특정 문자를 n번 출력하는 방법을 알아보겠습니다.
이 문제는 생각보다 아주 간단하게 해결할 수 있습니다. 바로 string 클래스의 생성자를 활용하는 것입니다. string 클래스에는 두 가지 인자를 받는 생성자가 있는데, 하나는 반복해서 채울 문자(character), 다른 하나는 반복 횟수(count)입니다. 이 생성자를 사용하면 지정한 문자로 가득 찬 문자열을 한 번에 만들 수 있습니다.
string 생성자의 동작 원리
string(count, my_char) 형태로 호출하면, my_char 문자가 count번 반복된 새로운 문자열 객체가 생성됩니다. 내부적으로 메모리를 할당한 후 해당 문자를 연속으로 채우기 때문에, 별도의 반복문을 직접 작성할 필요가 없습니다.
예제 코드
#include <iostream>
using namespace std;
void print_char_n_times(char my_char, int count) {
cout << string(count, my_char) << endl;
}
int main() {
// 문자 B를 10번 출력
print_char_n_times('B', 10);
// 문자 x를 30번 출력
print_char_n_times('x', 30);
}
실행 결과
BBBBBBBBBB
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
코드 설명
print_char_n_times 함수는 출력할 문자와 반복 횟수를 매개변수로 받습니다. 함수 내부에서 string(count, my_char)를 통해 원하는 길이의 문자열을 즉시 생성한 뒤, cout으로 화면에 출력합니다.
위 예제에서는 첫 번째 호출로 문자 'B'를 10번, 두 번째 호출로 문자 'x'를 30번 출력했습니다. 결과에서 보듯이 각 문자가 정확히 지정된 횟수만큼 한 줄에 나란히 출력되는 것을 확인할 수 있습니다.
마무리
이처럼 std::string의 fill 생성자를 사용하면 반복문이나 재귀 함수를 전혀 작성하지 않고도 손쉽게 문자를 여러 번 출력할 수 있습니다. 코드가 짧아질 뿐만 아니라 가독성도 크게 향상되므로, 유사한 패턴의 문자열을 만들어야 할 때 유용하게 활용할 수 있습니다.