<String 함수>
- 기존 c언어의 문자열 처리에 대한 불편함을 해소하고자 c++에서는 string 클래스를 사용한다.
- 실질적으로 많이 사용되는 것은 Iterator / empty() / size() or length() / clear() / substr() / compare() / replace() / swap() / find()
- String 선언
#include <string>
- String assign (문자열 할당)
string s1 = "hello"; //hello
string s2("hello"); //hello
string s3(5,'h'); //hhhhh
string s4("hellohi",5); //hello
string s5(`다른 string`,`시작지점`); //시작지점부터 다른 string 복사
string s6(`다른 string`,`시작지점`,`길이`); //시작지점부터 다른 string 길이만큼 복사
- String access (문자열 접근)
- s.at(i) : i번째 주소에 접근
- s[i] : i번째 주소에 접근
- s.front() : 첫 번째 주소에 접근
- s.back() : 마지막 주소에 접근
string s = "hello";
s.at(0); //h
s[0]; //h
s.front(); //h
s.back(); //o
- String Iterator (문자열 반복자)
- s.begin() : string의 첫 번째 주소 값 반환
- s.end() : string의 마지막+1 주소값 반환
-iterator 사용의 주의점은 주소값을 반환한다는 것과 end가 마지막+1의 주소 값을 반환한다는 것이다.-
string s = "hello";
// 유의해야할 점은 end가 문자열 마지막의 다음 주소를 가르킨다는 것이다.
string::iterator iter = s.begin(); //iter를 s의 시작지점으로 선언
for (iter; iter < s.end(); iter++) {
cout << *iter; //hello
}
s.begin() //h의 주소값
s.end() //o다음의 주소값
- String Capacity (문자열 용량)
- s.empty() : string이 비었는지 판단하여 bool로 반환
- s.capacity() : string의 용량 반환
- s.length() : string의 크기 반환
- s.size() : string의 크기 반환
- s.max_size() : string의 최대 크기 반환
- s.reserve() : string의 용량 재할당
//////////////////// empty() ////////////////////
string s = "hello";
s.empty() //false
s = ""; || s.clear();
s.empty() //true
//////////////////// capcity() / size() / length() ////////////////////
string s = "hellohi";
s.capacity(); //15
s.length(); //7
s.size(); //7
string s = "hellohellohelloh";
s.capacity(); //31
s.length(); //16
s.size(); //16
//////////////////// reserve() / max_size() ////////////////////
s.max_size(); //4294967294 -> 최대 크기 반환
// reserve로 크기 할당 시 100만큼 더해주는 것이 아니다.
// 100에서 가장가까운 정해진 크기만큼 할당해준다.
s.reserve(100);
s.capacity(); //111
s.length(); //16
s.size(); //16
- String Function1 (문자열 함수1)
- s.clear() : string 비워주기
- s.substr(index,length) : string을 index부터 length만큼 잘라서 반환
- s.replace(index,length,string2) : string을 index부터 length만큼 string2로 변환
- s.compare(string2) : string과 string2의 비교하여 사전순으로 빠르면 -1 같으면 0 느리면 1을 반환
string s = "hello";
string s2 = "aa";
string s3 = "abc";
string s4 = "ac";
string s5 = "aa";
s.substr(2,3); // llo
s.replace(2,3,"hi"); // hehi
s.replace(2,2,"hi"); // hehio
s2.compare(s3); // -1 (aa<abc)
s2.compare(s5); // 0 (aa==aa)
s4.compare(s2); // 1 (ac>aa)
s.clear(); //없음
- String Function2 (문자열 함수2)
- s.swap(string1,string2) : string1과 string2를 교환 (포인터 교환)
- s.copy(arr[],length,index) : string을 index부터 length만큼 arr에 복사후 / 실제 복사된 길이 반환
(c언어 문자열로 복사시 마지막에 \0 필수로 추가)
(arr의 길이를 반환한다)
- s.find(string2,index) : string에 string2가 있는지 찾아서 있으면 0 // string에 index부터 string2가 있는지 찾아서 위치 반환
char ar[10];
int len;
string s1 = "hello";
string s2 = "el";
len = s1.copy(ar,3,1); // len:3
a[len] = '\0'; // 필수로 추가해주어야한다.
ar; // ell
s1.find(s2); // 1 (el이 시작하는 위치 반환)
s1.find(s2,1); // 1 (index1부터 el을 찾으면 1에 있음)
s1.find(s2,2); // ? (index2 부터는 el이 없기 때문에 이상한 값 반환)
swap(s1,s2); // s1:el / s2:hello
- String Function3 (문자열 함수3)
- s.push_back(char c) : string뒤에 문자 추가
- s.pop_back() : string가장 뒤에 있는 문자 하나를 제거
- s.c_str() : c++ string 문자열을 c언어 char[] 문자열로 변환
string s = "hello";
s.push_back('h'); // helloh
s.pop_back(); // hello
const char *ar; //(const char형식으로 선언 해주어야 한다.)
ar = s.c_str(); // hello (쓸 일은 거의 없을 것 같다.)
'Dev > C++' 카테고리의 다른 글
Map 함수정리 C++ (0) | 2021.04.07 |
---|---|
Vector 함수정리 C++ (0) | 2020.11.11 |
댓글