[c++] 문자열 복사하는 방법

C++에서 문자열을 복사하는 여러 가지 방법이 있습니다. 각 방법의 장단점과 어떨 때 사용하는지에 대해 알아봅시다.

1. C 스타일 문자열

가장 전통적인 방법은 C 스타일의 문자열 복사 함수인 strcpy를 사용하는 것입니다. 하지만 이 함수는 주의해야 할 점이 많아 사용하기에 적절하지 않을 수 있습니다.

#include <cstring>
//...
char source[] = "Hello, world!";
char destination[20];
strcpy(destination, source);

2. C++ 문자열 객체의 메서드 사용

C++에서는 std::string 클래스를 사용해서 문자열을 다룹니다. 이 클래스는 = 연산자를 통해 쉽게 복사할 수 있습니다.

#include <string>
//...
std::string source = "Hello, world!";
std::string destination;
destination = source;

3. strcpy 함수를 안전하게 사용

위의 C 스타일 strcpy 함수를 사용할 때는 주의해야 합니다. 버퍼 오버플로우 문제를 방지하기 위해 strncpy 함수를 사용하는 것이 안전한 방법입니다.

char source[] = "Hello, world!";
char destination[20];
strncpy(destination, source, sizeof(destination));

4. std::copy 알고리즘 사용

C++ 표준 라이브러리의 std::copy 알고리즘을 사용하는 방법도 있습니다. 이 함수는 배열 또는 컨테이너의 일부분을 다른 배열이나 컨테이너에 복사할 때 사용합니다.

#include <algorithm>
#include <string>
//...
std::string source = "Hello, world!";
char destination[20];
std::copy(source.begin(), source.end(), destination);
destination[source.size()] = '\0';

이렇게 다양한 방법이 있지만, 특정 상황에 맞춰서 가장 안전하고 적절한 방법을 선택하는 것이 중요합니다.

참고 문헌