c++

문자열 다루기

폭주강아지 2018. 11. 19. 23:09

문자열 치환

=

ex)

string a = "java", b="C++"

a = b; //a= "C++"이 된다.


문자열 비교

Compare() 함수

두 문자열이 같으면 0, str보다 사전 순으로 앞에 오면 음수, 뒤에 오면 양수를 리턴한다.


문자열 연결

append()

ex) string a("i");

a.append("love");


a = "i love"


문자열 삽입

string a("I love c++");

a.insert(2, "really");


a = "I really love c++"


replace()


a.replace(2,11, "study"); // a= "I study c++"


문자열길이

문자열에 포함된 문자 개수를 말하며,

length(), size() 함수는 문자열의 길이를 리턴한다.

string객체의 내부 메모리 용량을 리턴하는 capacity()도 있다.

ex) string a("I love C++");

int length = a.length(); length = 11;

int size = a.size(); size = 11;

int capacity = a.capacity();


문자열 삭제

erase()는 문자열의 일부분을 삭제하고

clear()는 완전히 삭제한다.

ex)

string a("I love c++");

a.erase(0,7); // a의 처음부터 7개의 문자 삭제. a= "c++"로 변경

a.clear(); // a= "";


서브스트링

substr() 함수를 사용하면 문자열에서 일부분을 발췌한 문자열(서브스트링)을 얻을 수 있다.

ex) string b = "i love c++";

string c = b.substr(2,4); // b의 인덱스 2에서 4개의 문자 리턴. c = "love" 리턴

string d = b.substr(2); // b의 인덱스 2에서 끝까지 문자열 리턴. d= "love c++"


문자열 검색

find()는 문자열에서 특정 문자나 문자열을 발견하면 첫 번째 인덱스를 리턴한다.

발견하지 못하면 -1을 리턴한다.


string e = "i love love c++";

int index = e.find("love"); // e에서 love 검색. 인덱스 2 리턴

index = e.find("love", index+1); //e의 인덱스 3부터 "love" 검색. 인덱스 7 리턴

index = e.find("#c"); // e에서 "C#"을 발견할 수 없음. -1리턴

index = e.find('v', 7);


문자열에 있는 각 문자 얻기

at() 함수와 []연산자는 문자열의 특정 위치에 있는 문자를 리턴한다.

string f("i love c++");

char ch1 = f.at(7); // 문자열  f의 인덱스 7에 있는 문자 리턴. 

char ch2 = f[7]; //f.at(7)과 동일한 표현


char ch3 = f.at(f.length()-1); // ch3 은 '+'


문자열의 숫자 변환, stoi()

<string>헤더파잉ㄹ 삽입

ex)

string year = "2014";

int n = stoi(year); // n은 정수 2014값을 가짐


문자 다루기

string은 문자열만 다루지 문자를 다루는 기능은 없다. 문자를 다루는 함수는 <locale> 헤더 파일에 존재한다.

<locale> 헤더 파일에 있는 topper(), isdigit(), isalpha() 함수가 있다.