본문 바로가기
[ CODING STUDY ]/》C++ 공부

C++ 11장 [string]

by MRG 2022. 10. 28.
728x90
반응형

▣ 안녕하세요. 

이번장에서는 string클래스에 대해 공부해보도록 하겠습니다.

문자열은 문자를 여러 개를 관리하는 문자 배열을 의미합니다.

다시 말해 문자를 여러 개 관리하는 메모리를 의미합니다.

C언어에서는 char라는 자료형으로 char str [5]  이렇게 문자열을 다뤘습니다.

배열은 처음에 선언할 때 메모리의 크기를 먼저 정하기 때문에 문자열을 저장하고 다루기가 어려웠고 

관리하기도 어려움이 많았습니다.

그래서 C++에서는 그점을 개선하기 위해 표준 라이브러리에서 제공하는 클래스,

문자열 객체가 바로 string입니다.

string클래스는 문자열의 크기에 맞춰서 메모리 크기를 조절하기 때문에 

앞에 이야기한것처럼 메모리의 크기를 지정하고 미리 생각했야 했던 문제들은 쉽게 해결됩니다.

이제 코드를 작성하며 공부해 보록 하겠습니다.

 

▣ C++에서 문자열을 선언할 때  string str1 = "Hi " 코드처럼 변수를 생성한 것과 동일하게 작성합니다. 

자료형 변수이름; 이런 식으로 말이죠.

그런 다음에 for문으로 하나하나 배열의 인덱스마다 문자를 넣는 게 아니라  "Hi" 문자열을 대입만 하시면 됩니다. 

string str2(str1) 코드는 str1 문자열을 복사하고 str2를 정의하는 함수 코드입니다. 

str1.append("C++")는 str1 문자열 뒤에 문자를 연결하는 함수입니다. 

str2.insert(3, "C+++")는 내가 지정한 인덱스 위치에 문자를 삽입하는 함수입니다. 

string str3 = str2.substr(0, 3)는 문자열의 범위만큼 리턴(0부터 3개의 문자열만 리턴)하는 코드입니다.

그럼 str3에 0부터 3개의 문자열을 대입하게 됩니다.

다시 말해 내가 지정했던 범위의 문자를 제외하고 나머지는 삭제하고 대입을 합니다.

int index = str1.find("H")는 문자열을 검색하는 함수입니다.

find("찾을 문자열", 어디 인덱스부터 검색) 순으로 매개변수를 입력하시면 됩니다.

str1.length() 함수는 해당 변수에 문자열의 길이를 구하는 함수입니다. 

디버그를 하고 출력을 해보면

 

▣ 이렇게 각각 출력되는걸 확인할 수 있습니다.

 

 

▣ 이번에는 string로 만든 변수에 문자열을 입력하는 코드를 공부해보겠습니다.

우리가 cin을 이용해서 입력을 했습니다. cin은 띄어쓰기(공백)이나 엔터 전까지 문자를 입력하는 함수입니다.

getline(cin, str, '\n') 함수는 공백을 포함한 문자를 입력받는 함수이고  getline(cin, string객체, 문자열 마지막 표시 구분 문자) 순으로 매개변수를 입력하시면 됩니다.

그리고 디버그하고  Hi C++ 띄어쓰기까지 쓰고 엔터를 누르면 이렇게 모든 문자열이 입력된 걸 확인할 수 있습니다.

 

▣ 다른 기능으로는 

str2 = str1; 코드에서처럼 문자열 치환(문자열을 복사)하는 것도 가능합니다.

C언어에서는 배열 = 배열이 불가능합니다.

주소 = 주소로 이루어져 있기 때문에 불가능했고 다른 함수를 사용해야 했습니다.

C++에서 = 대입연산자 만으로 가능합니다. 

그리고 int compare = str1.compare(str2); 코드에서처럼 두 문자열을 이렇게 쉽게 비교할 수 있습니다.  
그리고 그에 대한 반환 값은 둘이 같으면 0, str1보다 사전 순으로 앞이면 음수, 뒤면 양수로 반환됩니다.

 

 

728x90
반응형

'[ CODING STUDY ] > 》C++ 공부' 카테고리의 다른 글

C++ 13장 [참조변수]  (0) 2022.11.04
C++ 12장 [함수객체]  (1) 2022.11.03
C++ 10장 [this 포인터]  (0) 2022.10.27
C++ 9장 [메모리 할당]  (0) 2022.10.26
C++ 8장 [포인터 객체]  (0) 2022.10.20

댓글