본문 바로가기

C++

C++ string 클래스

string 헤더 추가

#include <string.h>

string 생성(초기화)

  • string str = "hello";
  • string str("hello");
  • string str; str.assign("hello");
  • string *str = new string("hello");    // 동적할당 이용

코드 예시

string str = "abcd";
cout << "str : " << str << endl;

string str1("efgh");
cout << "str1 : " << str1 << endl;

string str2;
str2.assign("ijkl");
cout << "str2 : " << str2 << endl;

string* str3 = new string("mnop");
cout << "str3 : " << *str3 << endl;
delete str3;

출력 결과

string 접근 method

  • str.at(i) : i번째 인덱스의 문자 반환
  • str[i] : i번째 인덱스의 문자 반환(char형처럼 접근 가능)
  • str.front() : 맨 앞 문자 반환
  • str.back() : 맨 뒤 문자 반환

코드 예시

string str = "abcd";
cout << str.at(0) << endl;
cout << str[1] << endl;
cout << str.front() << endl;
cout << str.back() << endl;

출력 결과

string 비교 method

  • == : 문자열이 같은지 비교
  • <, > : 아스키코드 기준으로 비교
  • str.compare(str1) : str이 str1보다 더 작으면 -1, 동일하면 0, 더 크면 1 반환 (여기서 더 작다는 것은 사전순으로 더 빠르다는 것을 의미)

코드 예시

string str = "abcd";
string str1 = "efgh";

cout << (str == str1) << endl;
cout << (str < str1) << endl;
cout << (str > str1) << endl;
cout << (str.compare(str1)) << endl;

출력 결과

string 크기 method

  • str.length(), str.size() : 문자열 길이 반환
  • str.capacity() : 문자열 객체가 사용중인 메모리 크기 반환

string 글자 추가/삽입/삭제 method

  • +, += : 문자열 연결
  • str.append("plus") : 문자열 연결(현재 str문자뒤에 "plus" 추가)
  • str.insert(2, "plus") : 문자열 삽입(인덱스가 2인 문자 앞에 "plus"삽입)
  • str.replace(2, 4, "plus") : 문자열 대체(인덱스가 2인 문자부터 4개의 문자를 "plus"로 대체) 
  • str.erase(1, 3) : 문자열 부분 삭제(인덱스 1~3인 문자 삭제)
  • str.push_back('a') : 문자열의 맨 뒤에 문자 'a'를 더함
  • str.pop_back() : 문자열의 맨 뒤 문자 삭제

코드 예시

string str = "abcde";
str += "plus";
cout << str << endl;

string str1 = "abcde";
str1.append("plus");
cout << str1 << endl;

string str2 = "abcde";
str2.insert(2, "plus");
cout << str2 << endl;

string str3 = "abcde";
str3.replace(2, 4, "plus");
cout << str3 << endl;

string str4 = "abcde";
str4.erase(1, 3);
cout << str4 << endl;

string str5 = "abcde";
str5.push_back('a');
cout << str5 << endl;

string str6 = "abcde";
str6.pop_back();
cout << str6 << endl;

출력 결과

string iterator

iterator란 ?

c++ 라이브러리에서 제공하는 generic 함수로, 컨테이너에 저장된 모든 원소들을 훑어 나갈 때 사용함.

포인터와 비슷한 개념이라고 생각하면 됨. 

 

  • str.begin() : 문자열의 제일 첫 문자를 가리키는 반복자(iterator) 반환
  • str.end() : 문자열의 가장 끝 문자의 다음을 가리키는 반복자(iterator) 반환. 가장 끝 문자가 아닌 그 다음을 가리킨다는 것을 주의해야 함.
  • 주로 문자열을 순회할 때 사용함
    	string str = "abcd";
    	for (string::iterator iter = str.begin(); iter != str.end(); iter++)
    	{
    		cout << *iter << endl;
    	}

 

'C++' 카테고리의 다른 글

C++ stl sort  (0) 2022.03.31
C++ memset 사용법  (0) 2021.07.21