알고리즘 문제를 풀 때 필요한 문자열 정리
1. 선언 방법
- 문자열 선언 방법에는 크게 두가지가 있다.
1. char타입(문자형)의 배열을 만드는 것
2. string 타입의 변수를 선언하는 것
-> string은 문자열 타입이고, 변수로 선언하더라도 배열과 크게 다르지 않다.
(vector 개념을 사용하기 때문이다.)
-> 또한 string은 int, float, char와 같은 기본 타입이 아니기 때문에 헤더파일을 포함시켜주어야 한다.
(실제로 코드를 짜다보면 코드에서 char의 색깔은 바뀌고, string은 까만 색인 것으로 알 수 있다.)
-> #include<cstring>을 이용해 포함하거나 #include <string>을 이용하여 포함시킨다.
char ex.
string ex1.
string ex2.
2. 문자열 길이 구하기
- char와 string에 따라 문자열의 길이를 구하는 방법이 다르다.
- 헤더에 포함시킨게 cstring인지, string인지에 따라도 조금 다르다.
1. char의 문자열 길이 구하기
-> strlen(c); 로 길이를 구할 수 있다.
(헤더에 cstring을 포함했다면 이 방법이 가능하다. string을 포함했다면 불가능하다.)
2. string의 문자열 길이 구하기
-> s.size()를 이용하는 방법과 s.length()를 이용하는 방법 두 가지가 있다. 사실상 둘이 거의 똑같다.
(헤더에 cstring을 포함시켜도, string을 포함시켜도 가능하다.)
string length ex.
string 헤더 선언시 char length -> error ex.
cstring 헤더 선언시 char, string ex.
3. 띄어쓰기 업력 받기 (getline)
- 기본적으로 getline 함수를 이용한다.
- char배열인지, string인지에 따라 사용 방법이 다르다.
- string타입 변수 사용시 = getline(cin,s); //getline(cin, 문자열 변수 이름)
- char 배열 사용시 = cin.getline(c,101); //cin.getline(문자열 변수 이름, 문자열 배열의 크기)
ex1.
ex2.
4. 기본값과 종료문자
- int에서는 전역변수를 사용할 경우 0이 기본값이었다. 지역변수는 쓰레기값
- char는 전역변수를 사용할 경우 '\0'이 기본값이다. 지역변수는 쓰레기값
- string은 vector이기때문에 단어의 길이만큼만 배열의 방이 생긴다.
* 문자열 hello world를 문자열 변수에 담는다면
배열에 담기는 것은 'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '\0'이다.
그렇기 때문에
char arr[11];
을 하고 hello world를 담는다면
문제가 생긴다.
문자열의 종료를 알리는 \0이라는 문자 하나도 꼭 필요하다.
'알고리즘 > 개념' 카테고리의 다른 글
알고리즘의 시간복잡도 (0) | 2020.09.16 |
---|---|
[C++] pair (0) | 2020.09.04 |
C++ 알고리즘 실행시간 줄이기 (0) | 2020.08.22 |
문자열 정렬 (0) | 2020.08.11 |
큐(queue), 스택(stack) 명령어 정리와 연습문제 (0) | 2020.05.17 |
댓글