▣ 문자열을 다뤄보겠습니다. 우선 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를 그 안에 넣겠다는 의미입니다.
'[ C++ ] > - 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 |
댓글