[C++] 문자열(String) 정리

Dragony·2020년 3월 24일

C++

목록 보기
3/3

using namespace std 를 한 상태로 작성하였습니다.
std::string 을 간략하게 정리합니다.
string 함수 정리

C++의 문자열, std::string

C에서는 문자열을 char형 배열을 사용하거나 포인터를 사용하고, 문자열 끝에 '\0'을 넣는 방법으로(char[], char*) 지원한다. 하지만 C++에서는 string 이라는 클래스를 자체적으로 제공하고 있다.

C++의 문자열을 사용하려면 먼저 std::string을 사용하기 위해 #include < string > 을 선언해야한다. 이 작업이 완료되면 std::string 타입의 변수를 정의할 수 있다.

String 생성

  1. 방법 1
 string myString = "abcd";
 
  • 단, 이 방식으로느 'a'와 같은 char로 생성이 불가능하다. 따라서 이 한계를 극복하려면 방법 2를 써야한다.
  1. 방법 2

 string myString;
 myString = "abcd";
 
  1. 방법 3

string str(myString);
  1. 방법 4

stirng str("helloworld");

String 확장, 문자열 추가

  1. 방법1 : += 연산자 이용

string base = "hello world!";
base += "x";
  1. 방법2 : append() 멤버 함수 이용

string base = "hello world";
base.append("appended!");

string 길이


string base = "hello world";
base.length();
base.size();

size()와 length()는 이름만 다를 뿐 같은 일을 하는 멤버변수다.

메모리 관련

  1. capacity()

string base = "hello world";
base.capacity()

capacity()는 해당 문자열이 재할당을 하지 않고도 저장할 수 있는 문자열의 길이를 반환한다.
문자열은 문자열이 늘어났을 때, 현재 capacity보다 클 경우 더 큰 메모리를 사용할 수 있도록 재할당된다.

  1. max_size()

string base = "hello world!";
base.max_size()

max_size()는 최대한 메모리를 할당했을 경우, 저장하 수 있는 문자열의 길이를 반환한다.

string의 특정 위치 문자 받기(charAt)


string base = "hello world!";
base.at(0); // 'h'
base.at(1); // 'e'

해당 위치의 char을 반환한다.

string에 있는 특정 문자 탐색

  • mySting.find()

string base = "hello world!"l
base.find("world");

world! 문자열이 발견된 첫 위치를 반환한다.


if(base.find("world") != string::npos) {
	// "world!" 라는 문자열을 찾았을 때의 동작
}

탐색에 실패할 경우는 if문에서 볼 수 있듯이 string::npos를 반환한다.

string간의 문자열 복사


string src = "I am source :)" ;
string dst;
dst = src;

dst에는 같은 내용이 복사되어 들어간다.
얕은 복사가 아니다. 깊은 복사다.
즉, 복사 후에 src의 내용이 변경된다고 해도 dst의 내용에는 아무 영향을 미치지 않는다.

string 간의 문자열 비교


stirng a = "I am string one! :)";
string b = "string";

if(a.compare(b) == 0){
 //두 문자열이 같을 때 
}
else if(a.compare(b) < 0){
 //a가 b보다 사전 순으로 앞일 때
}
else if(a.compare(b) > 0{
 //a가 b보다 사전 순으로 뒤일 때
}

string 의 문자열 대체하기(replace 기능)

http://stackoverflow.com/a/14678964/2050087 참조

타입 변환

문자를 다른 타입으로 변경해야 할 필요가 있는 경우는 흔하다.
그래서 c++11에 들어 표준 라이브러리에 기본적인 타입 변환 기능이 추가됐다.


// int -> string
string s;
int i = 10;
s = std::to_string(i);
//string -> int
string s = "123";
int i;
i = std::stoi(s);
profile
안녕하세요 :) 제 개인 공부 정리 블로그입니다. 틀린 내용 수정, 피드백 환영합니다.

0개의 댓글