C ++에서 c_str 함수의 사용은 무엇입니까
나는 방금 C ++를 읽기 시작했고 C에는없는 문자열 조작을위한 풍부한 기능을 가진 C ++을 발견했다. 나는이 함수를 읽고 있었고 c_str()
내가 이해 c_str
하는 바는 null로 끝나거나 null로 끝나는 문자열이 아닐 수있는 문자열을 변환하는 것입니다. 사실입니까?
누구든지 내가 c_str 함수 의 사용을 이해할 수 있도록 몇 가지 예를 제안 할 수 있습니까 ??
c_str
const char*
null로 끝나는 문자열 (예 : C 스타일 문자열)을 가리키는를 반환합니다 . std::string
C 스타일 문자열로 작업 할 것으로 예상되는 함수에 의 "내용"¹을 전달하려는 경우 유용 합니다.
예를 들어 다음 코드를 고려하십시오.
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::string
에 const char*
.
즉, 버퍼를 변경하지 않겠다고 약속하면 읽기 전용 문자열 내용을 사용할 수 있습니다. 약속 = const char *
c_str ()은 C ++ 문자열을 기본적으로 null로 끝나는 바이트 배열 인 C 스타일 문자열로 변환합니다. C 스타일 문자열을 기대하는 함수에 C ++ 문자열을 전달할 때 사용합니다 (예 : 많은 Win32 API, POSIX 스타일 함수 등).
std::string
null 종료가 필요한 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
'IT TIP' 카테고리의 다른 글
DataTable의 열을 목록으로 변환하는 방법 (0) | 2020.12.14 |
---|---|
Chrome JavaScript Debugger 사용 / 페이지 로딩 이벤트 중단 방법 (0) | 2020.12.14 |
node.js에서 내 스크립트가 직접 실행되고 있는지 또는 다른 스크립트에 의해로드되고 있는지 알 수 있습니까? (0) | 2020.12.14 |
JPA : 모델 계층 구조 구현-@MappedSuperclass 대 @Inheritance (0) | 2020.12.14 |
WAS (Windows Process Activation Service)에서 응용 프로그램 풀을 제공하기 위해 작업자 프로세스를 시작할 때 오류가 발생했습니다. (0) | 2020.12.14 |