컴공생의 다이어리
[c++] string 관련 함수 본문
.assign : 문자열을 할당하는 함수
(문자열) : 문자열을 할당
(개수, 문자) : 문자를 개수만큼 할당
(문자열, 시작위치, 개수) : 매개변수 문자열의 시작위치부터 개수만큼을 호출한 문자열에 할당
string s1,s2,s3;
s1.assign("ABCDEFG"); //s1="ABCDEFG"
s2.assign(3,'a'); //s2="aaa"
s3.assign(s1,2,4); //s3="CDEF" (문자열 s1의 2부터 4개를 복사하여 할당)
.append : +연산자의 역할처럼 문자열을 끝에 더한다.
(문자열) : 문자열을 더한다
(개수, 문자) : 문자를 개수만큼 끝에 더한다
(문자열, 시작위치, 개수) : 매개변수 문자열의 시작위치부터 개수만큼을 호출한 문자열 뒤에 더한다
string s1,s2;
s1.append("ABCDEFG"); //s1="ABCDEFG"
s1.append(3,'a'); //s1="ABCDEFGaaa"
s2="S2";
s2.append(s1,2,4); //s2="S2CDEF" (문자열 s1의 2부터 4개를 복사하여 문자열 s2 끝에 더한다)
.clear : 문자열의 내용을 모두 삭제
string s1;
s1="HI"; //s1="HI"
s1.clear(); //s1=""
.compare : 문자열을 비교 (사전순으로 비교)
s1.compare(s2); //s1==s2이면 0, s1<s2이면 음수, s1>s2이면 양수를 반환
.empty : 문자열이 비어있는지 확인
s.empty();
.erase : 문자열을 지운다.
(시작위치, 개수) : 시작위치부터 개수만큼의 문자를 지운다.
string s="ABCDEF";
s.erase(0,3); //s="DEF"
.find : 특정 문자열을 찾고, 그 시작 위치를 반환
(문자) : 인덱스 0부터 해당 문자를 찾고, 그 시작위치를 반환
(문자열) : 인덱스 0부터 해당 문자열을 찾고, 그 시작위치를 반환
(문자열, 시작위치) : 시작위치부터 문자열을 찾고, 시작위치를 반환
string s1="ABCDEF";
string s2="B";
string s3="EF";
int location=s1.find(s2); //location=1
int location1=s1.find(s3); //location1=4
.replace : 문자열을 대체
(시작위치, 개수, 문자열) : 호출한 문자열의 시작위치부터 개수만큼의 문자를 매개변수 문자열로 대체
string s="ABC_DEF";
s.replace(4,3,"XYZ"); //s="ABC_XYZ"
.insert : 문자열을 지정한 위치에 삽입
(시작위치, 문자열) : 시작위치에 문자열을 삽입
string s="ABCDEF";
s.replace(3,"__"); //s="ABC__DEF"
.pop_back : 문자열에서 가장 뒤의 문자 하나를 뺌
.push_back : 문자열의 가장 뒤에 문자 하나를 추가
string s="ABCDEF";
s.pop_back(); //s="ABCDE"
s.push_back('x'); //s="ABCDEx"
.resize : 문자열의 크기를 재설정
.size, .length : 문자열의 크기를 반환
.max_size : 문자열이 최대로 가질 수 있는 길이를 반환
string s="ABCDEF";
int size=s.size(); //size=6 (실제 사용되고 있는 크기)
int length=s.length(); //length=6 (문자열의 크기)
.capacity : 할당된 메모리의 크기를 반환 (reallocation 없이 사용할 수 있는 문자수를 반환)
string s="ABCDEF";
int capacity=s.capacity(); //size=6, capacity=15
cf) capacity가 size보다 클 때, 속도는 더 빠르다.
(=capacity가 size보다 크면, 기존 공간에 문자를 추가하면 되지만 그 반대의 경우에는 문자를 추가하기 위해 새로운 메모리를 할당해야 하기 때문)
.reserve : reallocation을 피하기 위해, 메모리의 최소용량을 지정
(크기) : 크기만큼의 여유 메모리를 할당
string s="ABCDEF";
s.reserve(100);
.substr : 문자열의 일부분을 문자열로 반환
(시작위치) : 시작위치부터 끝까지의 문자들을 문자열로 반환
(시작위치, 개수) : 시작위치부터 개수만큼의 문자를 문자열로 반환
string s1="ABCDEF";
string s2=s1.substr(4); //s2="EF"
string s3=s1.substr(1,3); //s3="BCD"
.swap : 문자열을 서로 바꾼다.
string s1="ABC";
string s2="XYZ";
s1.swap(s2); //s1="XYZ" s2="ABC"
s2.swap(s1); //s1="ABC" s2="XYZ"
.at : 문자열에서 특정 위치의 문자를 액세스
string s="ABC";
char c=s.at(1); //c='B'
.c_str : string 문자열을 char*형으로 바꾸어 반환
string s="ABC";
int length=strlen(s.c_str());
.front : 문자열의 첫 번째 문자 반환
.back : 문자열의 마지막 문자 반환
string s="ABC";
s.front(); //=>A
s.back(); //=>C
.begin : 문자열의 첫번째 문자를 가리키는 반복자(iterator 포인터)를 반환
.end : 문자열의 마지막의 바로 다음을 가리키는 반복자(iterator 포인터)를 반환
'Development > C & C++' 카테고리의 다른 글
[c++] 형식 플래그(format flag)와 조작자(Manipulator) (0) | 2021.01.03 |
---|---|
[c++] cin (입력 받기) (0) | 2021.01.02 |
[c++] const 함수 (0) | 2020.12.27 |
[c++] 레퍼런스를 리턴하는 함수 (0) | 2020.12.27 |
[c++] 클래스의 객체 수 (0) | 2020.12.27 |