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 |