C++ Chapter 17.3 : std::string의 길이와 용량

Date:     Updated:

카테고리:

태그:

인프런에 있는 홍정모 교수님의 홍정모의 따라 하며 배우는 C++ 강의를 듣고 정리한 필기입니다. 😀
🌜 [홍정모의 따라 하며 배우는 C++]강의 들으러 가기!


chapter 17. std::string 문자열 클래스

std::string의 길이와 용량

sizecapacity 구분하기.

🔔 길이 (size)

  • “012345678”
    • size() 👉🏻 9
    • length() 👉🏻 9 글자
  • cf)
    • C 스타일 문자열(char *)은 뒤에 ‘\0’ 이 붙어있다. 문자열의 끝을 표시하기 위하여
    • C++ 의 str::string 에서는 ‘\0’ 같은 쓸데 없는 문자가 더 붙지 않는다.
      • string 클래스에서 문자열 길이를 자체적으로 직접 가지고 있기 때문에 C처럼 문자열의 끝을 알려주는 ‘\0’가 붙을 필요가 없기 때문에.
#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("") → empty
    • string 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’같은게 붙지 않으므로 lengthsize 값이 같다
    • capaticy() 👉🏻 1007
      • 문자열의 메모리 용량을 1007 길이의 문자열이 들어갈 수 있게끔 잡아둔다.
        • stringvector처럼 용량이 추가되거나 줄어들 것을 고려하여 용량을 할당받는다. reallocate 연산을 줄이기 위하여! (new, delete 사용 줄이기)
      • 시스템 마다 다를 수 있음.
      • 현재 reserve(1000)해서 1000이상으로 나온 상황
    • 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;
}



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Cpp 카테고리 내 다른 글 보러가기

댓글 남기기