문자열(string)은 널 문자(null character, '\0')로 끝나는 1차원 문자 배열입니다. 두 문자열의 연결(concatenation)이란 두 문자열을 하나로 합쳐 새로운 문자열을 만드는 것을 의미합니다.
문자열 1: Mangoes are 문자열 2: tasty 연결 결과: Mangoes are tasty
예제 코드
다음은 C++에서 두 문자열을 연결하는 프로그램입니다.
#include <iostream>
using namespace std;
int main() {
char str1[100] = "Hi...";
char str2[100] = "How are you";
int i,j;
cout<<"String 1: "<<str1<<endl;
cout<<"String 2: "<<str2<<endl;
for(i = 0; str1[i] != '\0'; ++i);
j=0;
while(str2[j] != '\0') {
str1[i] = str2[j];
i++;
j++;
}
str1[i] = '\0';
cout<<"String after concatenation: "<<str1;
return 0;
}실행 결과
String 1: Hi... String 2: How are you String after concatenation: Hi...How are you
코드 동작 원리
위 프로그램에는 str1과 str2라는 두 개의 문자열이 있습니다. 먼저 for 루프를 사용하여 str1의 끝까지 이동합니다. for 루프가 종료되면 변수 i에는 str1 내 널 문자('\0')가 위치한 인덱스가 저장됩니다. 이를 보여주는 코드는 다음과 같습니다.
for(i = 0; str1[i] != '\0'; ++i);
그다음 while 루프를 사용하여 str2의 값을 str1으로 복사합니다. 변수 j는 0부터 시작하여 str2의 각 문자를 i가 가리키는 위치에 순서대로 저장합니다. 이 루프는 str2[j]의 값이 널 문자가 아닐 때까지 반복됩니다.
j=0;
while(str2[j] != '\0') {
str1[i] = str2[j];
i++;
j++;
}두 문자열이 str1에 연결된 후에는 마지막에 널 문자를 추가하여 문자열의 끝을 표시합니다. 그런 다음 연결된 문자열을 화면에 출력합니다.
str1[i] = '\0'; cout<<"String after concatenation: "<<str1;
참고 사항
실무에서는 위와 같이 직접 구현하는 대신 C 표준 라이브러리의 strcat() 함수나 C++의 std::string 클래스를 사용하면 더 안전하고 간편하게 문자열을 연결할 수 있습니다. 특히 std::string은 '+' 연산자만으로 문자열을 합칠 수 있어 코드 가독성이 크게 향상됩니다.