C++ Chapter 17.3 : std::string의 길이와 용량
카테고리: Cpp
태그: Cpp Programming
인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!
chapter 17. std::string 문자열 클래스
std::string의 길이와 용량
size
와capacity
구분하기.
🔔 길이 (size)
- “012345678”
size()
👉🏻 9length()
👉🏻 9 글자
- cf)
- C 스타일 문자열(
char *
)은 뒤에 ‘\0’ 이 붙어있다. 문자열의 끝을 표시하기 위하여 - C++ 의
str::string
에서는 ‘\0’ 같은 쓸데 없는 문자가 더 붙지 않는다.- string 클래스에서 문자열 길이를 자체적으로 직접 가지고 있기 때문에 C처럼 문자열의 끝을 알려주는 ‘\0’가 붙을 필요가 없기 때문에.
- C 스타일 문자열(
#include <iostream>
#include <string>
using namespace std;
int main()
{
string my_str("012345678");
cout << my_str.size() << endl; // 9
return 0;
}
empty()
empty()
: 빈 문자열이라면 true 리턴, 아니면 false 리턴- C스타일 문자열(
char *
)과 달리 Null은 비어있는 문자열이라고 판단한다.string my_str("")
→ emptystring my_str
→ empty
#include <iostream>
#include <string>
using namespace std;
int main()
{
string my_str("");
cout << std::boolalpha;
cout << my_str.empty() << endl; // true 출력
return 0;
}
🔔 용량 (capacity)
- “01234567”
length()
👉🏻 8 (8글자)size()
👉🏻 8 (8글자)- C언어 스타일의 문자열은 뒤에
\0
가 붙으므로size
가 문자열 길이length
보다 1 만큼 더 크다. - 반면에
std::string
은 뒤에 ‘\0’같은게 붙지 않으므로length
와size
값이 같다
- C언어 스타일의 문자열은 뒤에
- ✨
capaticy()
👉🏻 1007- 문자열의 메모리 용량을 1007 길이의 문자열이 들어갈 수 있게끔 잡아둔다.
string
도vector
처럼 용량이 추가되거나 줄어들 것을 고려하여 용량을 할당받는다. reallocate 연산을 줄이기 위하여! (new, delete 사용 줄이기)
- 시스템 마다 다를 수 있음.
- 현재
reserve(1000)
해서 1000이상으로 나온 상황
- 문자열의 메모리 용량을 1007 길이의 문자열이 들어갈 수 있게끔 잡아둔다.
max_size()
- 최대한으로 메모리를 할당했을 경우 저장할 수 있는 문자열의 길이
#include <iostream>
#include <string>
using namespace std;
int main()
{
string my_str("01234567");
my_str.reserve(1000);
cout << std::boolalpha;
cout << my_str.length() << endl; // 8 출력
cout << my_str.size() << endl; // 8 출력
cout << my_str.capacity() << endl; // 1000 출력
cout << my_str.max_size() << endl; // 46116861018427387897 출력
return 0;
}
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기