일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 포인터
- Class
- 배열
- 오블완
- C++
- vscode
- array
- 알고리즘
- OOP
- Deep Learning
- raw data
- baekjoon
- Data Science
- pass by reference
- pointer
- 문자열
- string
- Object Oriented Programming
- function
- 함수
- Python
- 반복문
- predictive analysis
- 백준
- 티스토리챌린지
- const
- assignment operator
- 파이썬
- Pre-processing
- programming
- Today
- Total
Channi Studies
[C++] c_str() 함수 본문
string mystr = "Hello Guys!";
const char *c_mystr = mystr.c_str();
cout << c_mystr << endl; // Hello Guys!
cout << mystr << endl; // Hello Guys!
c_str()함수는 string class의 멤버 함수입니다.
c_str() 함수는 c++ style string을 c style string으로 변경하여 첫번째 문자(char)을 가리키는 포인터를 반환합니다.
str.c_str() 을 사용하면
해당 문자열의 첫번째 char을 가리키는 포인터를 return해줍니다.
여기서 중요한건 c style string은 문자의 배열이라는 점입니다.
아시다시피 배열의 특징은 배열의 이름이 해당 배열의 첫번째 원소를 나타내는 것 입니다.
즉, c style string에서
첫번째 char을 가리키는 포인터 호출 = 배열의 첫번째 원소 호출 = 배열 호출 = 문자열 전체 호출
인 것 입니다.
그렇기 때문에 'c style로 변환된 문자열을 반환한다' 고 보아도 되는 것 입니다.
사실 리턴하는것은 포인터이지 그 문자열 자체는 아니지만, 사실상 동일한 것이라고도 볼 수 있는것이죠.
또다른 한가지 특징은 c_str()으로 반환된 포인터는 상수에 대한 포인터(pointers to constants) 입니다.
그렇기 때문에 이후에 그 값을 변경할 수 없다는 점을 인지해야 합니다.
상수와 관련된 포인터의 개념은 다음 포스트에 정리되어있습니다.
[C++] 상수의 포인터 (Pointers to Constants)
일반적인 변수에 대한 포인터를 공부하다보면, 상수 값에 대한 포인터가 궁금해질 수 있습니다. const 키워드로 선언하는 상수는 알다시피 그 값이 선언과 초기화 이후에 변경할 수 없습니다. 그
code-studies.tistory.com
'C++ > 함수 (Function)' 카테고리의 다른 글
[C++] sort 함수 | 배열/벡터 오름차순 정렬 (0) | 2024.01.09 |
---|---|
[C++] transform (0) | 2024.01.05 |
[C++] 함수에서 포인터를 반환하기 (Returning a Pointer from a Function) (1) | 2023.12.22 |
[C++] 재귀 함수 (Recursive Function) (0) | 2023.12.18 |
[C++] 참조로 전달하기 (Pass by Reference) (1) | 2023.12.17 |