C++ 프로그래밍에서는 문자열에 포함된 공백을 하이픈(-)으로 바꿔야 하는 경우가 종종 있습니다. 예를 들어 URL 슬러그 생성, 파일명 정규화, 데이터 전처리 등의 작업에서 이런 변환이 유용하게 활용됩니다.
이 프로그램은 다음과 같은 순서로 동작합니다. 먼저 std::string 클래스의 length() 함수를 사용해 문자열의 전체 길이를 구한 뒤, 반복문으로 문자열을 한 글자씩 순회하면서 공백(' ')을 발견하면 해당 위치를 하이픈('-')으로 교체합니다.
예제 코드
#include <cstring>
#include <iostream>
using namespace std;
int main(){
// 원본 문자열 선언
string str = "Coding in C++ programming";
cout<<"Normal String::"<<str<<endl;
for (int i = 0; i < str.length(); ++i) {
// 공백 문자를 '-'로 교체
if (str[i] == ' ') {
str[i] = '-';
}
}
// '-'가 적용된 문자열 출력
cout <<"Output string::"<< str << endl;
return 0;
}핵심 포인트
- 인덱스 접근: C++의
std::string은 배열처럼str[i]형태로 개별 문자에 접근하고 수정할 수 있습니다. - length() 함수: 문자열의 실제 길이를 반환하므로, 반복문의 범위를 안전하게 지정할 수 있습니다.
- 시간 복잡도: 문자열을 한 번만 순회하므로 시간 복잡도는 O(n)으로 매우 효율적입니다.
실행 결과
프로그램을 실행하면 입력된 문자열의 모든 공백이 하이픈으로 바뀌어 아래와 같이 출력됩니다.
Normal String::Coding in C++ programming Output string::Coding-in-C++-programming
이처럼 간단한 반복문 하나만으로도 문자열 내 특정 문자를 손쉽게 치환할 수 있습니다. 더 복잡한 치환이 필요하다면 정규표현식을 활용하는 std::regex_replace 함수를 고려해볼 수도 있습니다.