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 |