IT TIP

C ++에서 c_str 함수의 사용은 무엇입니까

itqueen 2020. 12. 14. 21:26
반응형

C ++에서 c_str 함수의 사용은 무엇입니까


나는 방금 C ++를 읽기 시작했고 C에는없는 문자열 조작을위한 풍부한 기능을 가진 C ++을 발견했다. 나는이 함수를 읽고 있었고 c_str()내가 이해 c_str하는 바는 null로 끝나거나 null로 끝나는 문자열이 아닐 수있는 문자열을 변환하는 것입니다. 사실입니까?

누구든지 내가 c_str 함수 의 사용을 이해할 수 있도록 몇 가지 예를 제안 할 수 있습니까 ??


c_strconst char*null로 끝나는 문자열 (예 : C 스타일 문자열)을 가리키는를 반환합니다 . std::stringC 스타일 문자열로 작업 할 것으로 예상되는 함수에 의 "내용"¹을 전달하려는 경우 유용 합니다.

예를 들어 다음 코드를 고려하십시오.

std::string str("Hello world!");
int pos1 = str.find_first_of('w');

int pos2 = strchr(str.c_str(), 'w') - str.c_str();

if (pos1 == pos2) {
    printf("Both ways give the same result.\n");
}

실제로 확인하십시오 .

메모:

¹ 이것은 std::string(C 문자열과 달리) \0문자 가 포함될 수 있기 때문에 전적으로 사실이 아닙니다 . 만약 그렇다면,의 반환 값을받는 코드 c_str()는 문자열 \0의 끝으로 해석 될 것이기 때문에 문자열이 실제보다 짧다고 생각하게됩니다 .


C ++에서는 문자열을 다음과 같이 정의합니다.

std::string MyString;

대신에

char MyString[20];.

C ++ 코드를 작성하는 동안 매개 변수로 C 문자열이 필요한 일부 C 함수가 있습니다.
아래와 같이 :

void IAmACFunction(int abc, float bcd, const char * cstring);

이제 문제가 있습니다. C ++로 작업하고 있으며 std::string문자열 변수를 사용하고 있습니다 . 그러나이 C 함수는 C 문자열을 요구합니다. std::string표준 C 문자열 로 어떻게 변환 합니까?

이렇게 :

std::string MyString;
// ...
MyString = "Hello world!";
// ...
IAmACFunction(5, 2.45f, MyString.c_str());

이것은 무엇 c_str()을위한 것입니다.

즉, 참고 사항 std::wstring문자열, c_str()반환합니다 const w_char *.


대부분의 OLD C ++ 및 c 함수는 문자열을 처리 할 때 const char*.
와 STL로 std::string, string.c_str()변환 할 수 있도록 도입 std::stringconst char*.

즉, 버퍼를 변경하지 않겠다고 약속하면 읽기 전용 문자열 내용을 사용할 수 있습니다. 약속 = const char *


c_str ()은 C ++ 문자열을 기본적으로 null로 끝나는 바이트 배열 인 C 스타일 문자열로 변환합니다. C 스타일 문자열을 기대하는 함수에 C ++ 문자열을 전달할 때 사용합니다 (예 : 많은 Win32 API, POSIX 스타일 함수 등).


std::stringnull 종료가 필요한 C 코드와 상호 운용 할 수 있도록하는 데 사용 됩니다 char*.


In C/C++ programming there are two types of strings: the C strings and the standard strings. With the <string> header, we can use the standard strings. On the other hand, the C strings are just an array of normal chars. So, in order to convert a standard string to a C string, we use the c_str() function.

for example

// a string to a C-style string conversion//

const char *cstr1 = str1.c_str();
cout<<"Operation: *cstr1 = str1.c_str()"<<endl;
cout<<"The C-style string c_str1 is: "<<cstr1<<endl;
cout<<"\nOperation: strlen(cstr1)"<<endl;
cout<<"The length of C-style string str1 = "<<strlen(cstr1)<<endl;

And the output will be,

Operation: *cstr1 = str1.c_str()
The C-style string c_str1 is: Testing the c_str 
Operation: strlen(cstr1)
The length of C-style string str1 = 17

참고URL : https://stackoverflow.com/questions/7416445/what-is-use-of-c-str-function-in-c

반응형