본문 바로가기
[ CODING STUDY ]/》C++ 코드실습

C++ [문자열, string, 문자열 함수]

by MRG 2021. 5. 31.
728x90
반응형

▣ 문자열을 다뤄보겠습니다. 우선 string 클래스는 사용하기 위해서는 #include <string.h>를 선언해줘야 합니다.

보통 C언어에서는 문자열을 다루기 위해서는 char name []에서 처럼 char 하나에 문자를 여러 개 저장하기 위한 

배열을 필요합니다. 

하지만 C++에서는 string 클래스는 통해 문자열을 char 하나하나가 아닌 string 자료형 형식으로 하나에 클래스로 사용할 수 있습니다. string name1을 선언하고 name1에 문자열을 정의한 다음에 출력을 해보면 

배열과 동일하게 문자열이 잘 출력되는 걸 확인할 수 있습니다.

 

▣ 이번에는 문자열을 입력받겠습니다. 

우리는 입력을 받을 때에는 std::에 있는 cin을 사용했습니다. 

하지만 cin 같은 경우 한 단어 단위로 입력을 받습니다.

쉽게 이야기해서 개행 문자 띄어쓰기가 들어가지 않는 단어까지 입력을 받습니다. 

 

▣ 그럼 개행 문자를 포함한 문자열 모두를 포함하는 방법은 없을까요? 있습니다.

바로 cin.getline() 함수입니다. getline(저장할 문자열 메모리 주소, 입력받을 문자수) 이렇게 입력을 해주시면 됩니다.

그런데 그냥 입력을 하게 되면 이상하게 첫 번째 문자를 입력받고 바로 프로그램이 끝나는걸 확인할 수 있습니다.

그건 버퍼에 첫번째 문자열을 입력할 때 개행 문자 \n , 줄 바꿈(엔터)가 남아 있기 때문입니다. 

이걸 해결하기 위해서는 중간에 버퍼에 있는 개행 문자를 지워주면 됩니다.

입력을 한 번 더 받아도 되지만, cin.ignore() 함수를 사용하면 됩니다. 

그럼 버퍼에 있는 내용을 지워줍니다.

그리고 밑에 cin.getline() 함수를 사용해서 입력을 받으면 됩니다.

cin.getline() 첫 번째 매개변수 안에 배열을 넣어주셔야 합니다.

string name1에 name1을 넣게 되면 안 됩니다.

그건 우리가 cin.getline() 두 번째 매개변수에는 입력받을 메모리에 수를 넣기 때문입니다.

 

 

▣ 그럼 이번에는 다른 getline()을 살펴보겠습니다.

#include <string> 선언하게 되면 cin에 접근한 getline이 아닌 string에 있는 getline(cin, name1)이라는 함수를 사용할 수 있습니다. 

이건 아까 getline()과 다르게 (cin, name1) 첫 번째 매개변수에는 cin 입력과 name1 string으로 선언한 변수를 넣어서 사용할 수 있습니다. 

 

▣ 이번에는 append() 함수를 사용해 보겠습니다. 이건 문자열 변수에. 접근해서 사용합니다.

(추가할 문자열, 저장할 시작 위치, 문자수)를 하나하나 넣어주시면 Hi C++ Good에서 띄어쓰기를 포함한 

0인 H부터 6까지인 +까지 출력되는 걸 확인할 수 있습니다. 

 

▣ 그리고 문자열에. length() 함수를 사용하시면 문자열에 길이를 출력할 수 있고,

. size() 함수는 메모리에 크기를 출력해줍니다.

 

▣. find() 함수는 문자열에 문자를 찾아주는 함수입니다. 

그 해당 함수가 있다고 하면 True입니다. 

 

▣ compare() 함수는 매개변수와 자신이 같은지 다른지를 비교해주는 함수이니다. 

같으면 0, 다르면 -1을 반환합니다. 

 

▣ replace() 함수는 (바꿀 시작 위치, 바꿀 문자열 길이, 대입할 문자열)을 넣어서 현재 문자열에 다른 문자열을 

추가해주고 변경해주는 걸 의미합니다. 2, 5, name2라고 했기 때문에 

name에 2번째인 He이후에 문자를 바꾸겠다.

5개를 그리고 name2를 그 안에 넣겠다는 의미입니다. 

728x90
반응형

'[ CODING STUDY ] > 》C++ 코드실습' 카테고리의 다른 글

C++ [for문, 포인터, 레퍼런스변수]  (0) 2021.07.09
C++ [함수 오버로딩]  (0) 2021.07.02
C++ [구조체 함수 사용]  (0) 2021.06.08
C++ [메모리 할당, new, delete]  (0) 2021.05.23
C++ [출력, 입력]  (0) 2021.05.21

댓글