본문 바로가기

Language, IDE/C, C++

[C++ STL] C++ String(스트링)

C++에서는 STL에서 제공하는 스트링(String) 클래스를 제공한다.

string 클래스는 <string>라이브러리에 포함되어있고 string은 std에 규정되어 있으므로 네임스페이스 std를 추가해주어야 한다.


#include <string>
using namespace std;


STL에서 제공해주는 이 string 클래스는 클래스지만 입출력 연산자 <<, >>와 인덱스 []연산자,연결하는 +연산자, ==연산자등 다양한 연산자가 정의되어있어 프로그래머가 일반 변수처럼 사용할 수 있다. 그리고 string은 클래스이기때문에 .empty(), at(i)와 같은 멤버 string 함수 또한 사용할 수 있다.



생성

인자가 없는 생성자, 

string str;


const char arrayt인 "hello"를 인자로 가지는 생성자

string str("hello");


다른 스트링 str2를 인자로 가지는 생성자

string str1(str2);




원솟값 접근

i번재 원솟값 접근

str[i];

str.at(i);


n에서 length만큼의 길이를 가지는 string리턴

str.substr(position,length);



할당(assign), 변경

str1에 str2값으로 초기화

str1 = str2;


str1의 뒤에 str2값을 연결

str1 += str2;

str1 = str1 + str2;


str이 비어있으면 true, 아니면 false를 리턴

str.empty();


str1의 뒤에 str2의 값을 연결한 값을 리턴

str1 + str2;


str1의 n부터 str2를 삽입

str1.insert(n,str2);


str1의 n부터 length만큼 제거

str2.remove(n,length);



비교

string에서는 일반 변수처럼 ==, !=로 같음을 비교할 수 있고 <, >, <=, >=로 크기를 비교할 수 있다. (사전적 순서)


찾기

str2의 값이 처음 나오는 str1의 위치를 리턴

str1.find(str2);


str2의 값이 처음 나오는 str1의 위치를 리턴, str1의 n위치부터 시작

str1.find(str2,n);


str2가 존재하면 true 하지않으면 false를 리턴, str1의 n위치부터 시작

str1.find_first_of(str2,n);


str2가 존재하면 false 하지않으면 true를 리턴, str1의 n위치부터 시작

str1.find_first_not_of(str2,n);



string 입출력

string은 일반 변수와 같이 <<, >>연산자를 이용하여 입출력할 수 있다.

str의 값 출력

cout<<str;


str에 값 입력

cin>>str;