C++ STL에서 c_str() 함수는 널 문자(null character)로 종료되는 문자 배열에 대한 포인터를 반환하는 내장(built-in) 메서드입니다. 이 함수가 반환하는 값은 널 문자로 끝나는 C 스타일 문자열입니다.
함수 문법
C++에서 c_str 함수를 정의하는 문법은 다음과 같습니다.
const char* c_str() const
함수의 특징
c_str()은 C++ STL 라이브러리의 string 클래스에 포함된 내장 메서드로, 다음과 같은 특징을 가집니다.
- 매개변수를 전달받지 않습니다.
- 반환 타입은 char 포인터(const char*)입니다.
- 반환된 포인터는 널(NULL) 문자로 종료되는 문자 배열을 가리킵니다.
이 함수는 주로 C 스타일 문자열(const char*)이 필요한 API와 std::string 객체를 함께 사용해야 할 때 유용합니다. 예를 들어 printf, fopen 같은 C 표준 라이브러리 함수에 문자열을 전달할 때 활용됩니다.
사용 예제
다음 예제는 c_str() 함수를 사용하여 문자열에 특정 문자 'P'가 포함되어 있는지 확인하는 코드입니다.
#include <bits/stdc++.h>
#include <string>
using namespace std;
int main() {
string s = "I Love Tutorials Point";
int flag = 0;
cout << "Checking if the string " << s << " contains P " << endl;
for(int i = 0; i < s.size(); i++) {
if(s.c_str()[i] == 'P') {
cout << "The string contains character";
flag = 1;
}
}
if(flag == 0) {
cout << "The string does not contain character";
}
}실행 결과
Checking if the string I Love Tutorials Point contains P The string contains character
주의 사항
c_str()이 반환하는 포인터를 사용할 때 몇 가지 주의할 점이 있습니다.
- 반환된 포인터는 원본 string 객체가 수정되거나 소멸되면 더 이상 유효하지 않을 수 있습니다.
- 반환된 포인터는 const이므로 해당 메모리의 내용을 직접 수정해서는 안 됩니다.
- C++11 이후부터는 반환된 포인터가 널 문자를 반드시 포함하도록 보장됩니다.