[C++/Algorithm] STL : String

정건희·2024년 11월 14일

STL/알고리즘

목록 보기
2/10

1. SWEA 1225 암호생성기 풀던 중..

결과값이 1 0 0 2 0 3 과 같이, 중간에 공백이 포함된 글자를 출력하는 것인데 이를 반복문으로 공백처리해서 출력할 수 있겠지만, output문을 간결하게 하고 싶었다.
String에 한번에 넣으려고 하는 과정에서 조사하게 되었당.


2. String 클래스의 특징

  • c : char*, char[]의 형태로 문자열 취급
  • c++ : 문자열을 하나의 변수 타입으로 사용, 문자열을 다양하고 쉽게 다룰 수 있게 해준다.
    -> char*, char[]와 다르게 문자열 끝에 "\0"문자가 없으며 문자열의 길이를 동적으로 변경이 가능함!!


3. String 클래스의 입출력

c++ 입출력 방법인 cin, cout으로 입출력이 가능하다. getline함수도 이용이 가능하다!
C에서 사용하던 scanf, printf는 사용이 불가능하다.

함수기능
 string str;빈 문자열 str 생성
string str = "abcdef";"abcdef" 로 선언된 str 생성
string str; str = "abcdef""abcdef" 로 선언된 str 생성
string str2(str1);str1 문자열을 복사한 str2 생성
char s[ ] = {'a', 'b', 'c', 'd', 'e', 'f'}; string str(s);C에서의 문자열과 호환 가능
 string *str = new string("abcdef");new를 이용한 동적할당



4. String 클래스의 연산자 활용

<, >, ==, + 등과 같은 연산자를 사용할 수 있다.

  • 문자열 비교 (<, >, ==) : 두 문자열의 사전 순서를 비교, 또는 동일 여부를 확인할 수 있다.
  • 문자열 연결(+) : 두 문자열을 이어주는 역할을 한다.
string str1 = "abcdef";
string str2 = "bbbbbb";
string str3 = "aaaa";
string str4 = "abcdef";
cout << (str1 < str2) << ' ' << (str1 < str3) << ' ' << (str1 == str4);
//1 : true , 0 : false

str1 += "A";
cout << str1 << '\n';
str1 = str1 + str2;
cout << str1 << '\n';
출처: https://rebro.kr/53 [Rebro의 코딩 일기장:티스토리]

str1보다 str2가 사전 순서가 더 느리기 때문에 true(1)를 반환, str3은 사전 순서가 str1보다 더 빠르기 때문에 false(0)를 반환, str1과 str4는 문자열이 동일하기 때문에 true(1)를 반환하는 것을 볼 수 있다.
또 str1에 "A"를 더해주게 되면 "A"가 str1 맨 뒤에 붙게 되고, str2를 더해주면 str2가 str1의 맨 뒤에 붙게 되는 것도 볼 수 있다.
이처럼 C에서의 문자열보다 훨씬 간편하게 두 문자열에 대한 연산을 할 수 있다.


5. String 클래스의 멤버 함수

String의 특정 원소 접근

함수기능
str.at(index) index 위치의 문자 반환. 유효한 범위인지 체크 O
str[index] index 위치의 문자 반환, 유효한 범위인지 체크 X. 따라서 at 함수보다 접근이 빠름
str.front() 문자열의 가장 앞 문자 반환
str.back() 문자열의 가장 뒤 문자 반환



String의 크기

함수기능
str.length() 문자열 길이 반환
str.size() 문자열 길이 반환 (length와 동일)
str.capacity()문자열이 사용중인 메모리 크기 반환
str.resize(n)string을 n의 크기로 만듬. 기존의 문자열 길이보다 n이 작다면 남은 부분은 삭제하고, n이 크다면 빈 공간으로 채움
str.resize(n, 'a')n이 string의 길이보다 더 크다면, 빈 공간을 'a'로 채움
str.shrink_to_fitstr의 capacity가 실제 사용하는 메모리보다 큰 경우 낭비되는 메모리가 없도록 메모리를 줄여줌



String에 삽입, 추가, 삭제

함수기능



기타 유용한 String 멤버 함수

함수기능

0개의 댓글