[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';
이렇게 다양한 방법이 있지만, 특정 상황에 맞춰서 가장 안전하고 적절한 방법을 선택하는 것이 중요합니다.
참고 문헌
strcpy
: http://www.cplusplus.com/reference/cstring/strcpy/std::string
: http://www.cplusplus.com/reference/string/string/strncpy
: http://www.cplusplus.com/reference/cstring/strncpy/std::copy
: http://www.cplusplus.com/reference/algorithm/copy/