Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ STL basic_string의 c_str() 함수 완벽 정리

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 이후부터는 반환된 포인터가 널 문자를 반드시 포함하도록 보장됩니다.