학습일지/C와 C++

C++ std::string

Tsukino Ren 2026. 3. 13. 12:51

std::string

std::string 이란?

std::string은 C++ 표준 라이브러리(STL)에서 제공하는 문자열 클래스로, char 배열을 직접 다룰 때 발생하는
메모리 관리(버퍼 오버플로우 등) 문제를 해결하고, 동적으로 크기가 조절되는 문자열 처리 기능을 제공한다.

문자열의 삽입, 삭제, 연결, 검색 등 다양한 API를 제공하여 문자열을 안전하고 편리하게 사용할 수 있다

#include <string>


사용할 시 위에 헤더를 포함해야 한다.


 

사용 예시

	std::string select[] = { "손오공", };
	int selecter = 0;
	std::string nickname;

	Player* player = nullptr;
	Monster* monster = nullptr;

	std::cout << "닉네임을 입력해주세요: ";
	std::cin >> nickname;
	
	std::cout << std::endl;
	std::cout << nickname << "님 드래곤볼 rpg에 오신것을 환영합니다!" << std::endl;
	std::cout << "플레이하실 캐릭터를 선택해주세요" << std::endl;

위 코드처럼 std::string 를 사용하면 문자열을 일반 변수처럼 쉽게 선언하고 사용할 수 있다.


std::string 주요 기능

문자열 연결

int main(void)
{
	std::string Start = "저녁 ";
	std::string End = "먹언 ?";

	std::string result = Start + End;

	std::cout << "저녁 먹었니?" << std::endl;
	std::cout << Start << std::endl;
	std::cout << End << std::endl;
	std::cout << result << std::endl;
}

출력


문자열 길이 확인

std::string text = "TestText";

std::cout << text.length();

출력


문자열 추가

std::string text = "Dargon";

text += " Breath";

출력


특정 문자 접근

std::string text = "Dragon";

std::cout << text[0];

출력


문자열 입력

cin

std::string name;

std::cin >> name;

std::cout << "\n" << name << std::endl;

출력

getline()

std::string name;

std::getline(std::cin, name);

std::cout << "\n" << name << std::endl;

출력


char 와 std::string 의 차이

char

#include <iostream>
#include <cstring>

int main(void)
{
    char text[20] = "DragonBall";

    std::cout << text;
}

특징으론 문자열 크기를 미리 정해줘야 하며 문자열 끝에 0이 들어간다

그리고 배열 크기를 넘으면 컴파일 오류가 발생한다. 문자열 처리 함수가 불편하고 메모리 관리를 직접 해야한다.

#include <cstring>

해당 헤더를 사용한다.

std::string

#include <iostream>
#include <string>

int main(void)
{
    std::string text = "DragonBall";

    std::cout << text;
}

std::string은 크기를 자동 관리 해주며 문자열 함수를 많이 제공해주고 메모리 관리가 안전하다.


핵심 정리

std::string 을 사용하는 이유

  • 문자열 크기를 자동으로 관리한다
  • char 배열보다 사용이 간단하다
  • 다양한 문자열 처리 함수 제공된다
  • 메모리 안전성이 높다

마무리

정리할게 적어서 찾다보니 생각보다 많은 내용들이 존재했다.

지금은 기본기를 우선 확실하게 닦아두고 후에 뒷 내용들을 하나하나 살펴봐야겠다.

'학습일지 > C와 C++' 카테고리의 다른 글

C++ Vector  (0) 2026.03.14
C++ Template Programming  (0) 2026.03.13
C/C++ 상속과 다형성, 추상 클래스  (0) 2026.03.12
C++ RPG 전투 시스템 구현 과제  (0) 2026.03.11
C++ 복사 생성자와 오버로딩  (0) 2026.03.11