append() 함수는 std::string 클래스에서 문자열을 덧붙이는 데 사용되는 멤버 함수이다. 기존 문자열에 새로운 문자열을 추가하거나, 지정된 범위의 문자열을 추가할 수 있다.
str : 추가할 문자열subpos, sublen : str의 특정 부분을 추가할 때 시작 위치와 길이s : 추가할 C-스타일 문자열n : 반복해서 추가할 문자 또는 C-스타일 문자열의 길이c : 반복해서 추가할 단일 문자first, last : 범위 기반 추가를 위한 반복자std::string&)를 반환하여 체이닝(연속 호출)이 가능하다.기본 문자열 추가 (const std::string& str)
int main() {
std::string str = "Hello";
str.append(", World!");
std::cout << str << "\n"; // 출력: Hello, World!
return 0;
}
문자열의 부분 추가 (const std::string& str, size_t subpos, size_t sublen)
int main() {
std::string str = "C++ Programming";
str.append(str, 4, 11); // 4번째 인덱스부터 11글자 추가
std::cout << str << "\n"; // 출력: C++ ProgrammingProgramming
return 0;
}
C-스타일 문자열 추가 (const char* s)
int main() {
std::string str = "Hello";
const char* cstr = " World!";
str.append(cstr);
std::cout << str << "\n"; // 출력: Hello World!
return 0;
}
C-스타일 문자열의 일부 추가 (const char* s, size_t n)
int main() {
std::string str = "Welcome";
const char* cstr = " to the C++ world.";
str.append(cstr, 7); // cstr의 처음 7글자 추가
std::cout << str << "\n"; // 출력: Welcome to the
return 0;
}
반복해서 문자 추가 (size_t n, char c)
int main() {
std::string str = "Hello";
str.append(3, '!'); // '!'를 3번 추가
std::cout << str << "\n"; // 출력: Hello!!!
return 0;
}
범위 기반 추가 (Iterator first, Iterator last)
int main() {
std::string str = "Numbers: ";
std::vector<char> vec = {'1', '2', '3', '4', '5'};
str.append(vec.begin(), vec.end());
std::cout << str << "\n"; // 출력: Numbers: 12345
return 0;
}
append()는 반환값으로 문자열의 참조를 반환하므로, 체이닝하여 연속적인 문자열 조작이 가능하다.
int main() {
std::string str = "Start";
str.append(" -> ").append("Middle").append(" -> ").append("End");
std::cout << str << "\n"; // 출력: Start -> Middle -> End
return 0;
}
C-스타일 문자열의 길이
append(const char* s) 함수는 s가 null-terminated 문자열이어야 한다. 그렇지 않으면 정의되지 않은 동작이 발생할 수 있다.문자열 길이 제한
std::string의 최대 길이(std::string::max_size())를 초과하면 예외(std::length_error)가 발생한다.효율성
append() 호출 시 문자열이 확장되면서 메모리 재할당이 발생할 수 있다. 여러 번 추가 작업이 필요한 경우, reserve()를 사용해 미리 메모리를 확보하면 성능을 향상시킬 수 있다.