앞에서 문자열 배열과 포인터 배열을 통해서 문자열을 어떻게 나타내고 두 개의 차이가 무엇인지 배웠습니다.
이번 시간에는 이같이 문자열을 쓸 때마다 배열을 쓰지 않고 편하게 쓸 수 있는 방법을 알려드리도록 하겠습니다. 그리고 활용법도 같이 알려주도록 하겠습니다.
만약 문자열을 편하게 사용하려면 스트링 라이브러리를 가져와야 됩니다.
#include<string>을 먼저 처음에 써줍니다. 이제부터 string 라이브러리에 있는 내장함수(?)들을 하나씩 알려드리겠습니다.
1. strlen(문자열 길이 계산)
만약 이 함수를 사용하지 않고 문자열의 길이를 계산한다면 개행 문자가 나올 때까지 이동시키고 계산해주는 코드를 짜야됩니다. 그러나 이 함수를 사용하면 한 번에 문자열 길이를 계산할 수 있습니다.
이런식으로 strlen(배열이름)을 넣어서 사용하면 됩니다. 그림 1을 보면 알겠지만 jinwoo 총 6글자인걸 잘 알려주고 있습니다.
sizeof 함수와의 차이점은 sizeof는 문자열을 저장하는 배열 자체의 길이를 말하고 strlen은 문자열의 길이를 말합니다.
2. strcmp(문자열을 비교하고, 두 문자열의 dictionary 순서를 파악할 때 사용)
예를 들어 strcmp(a,b)가 있으면 a가 b보다 나중에 나오면 1을 반환하고, a가 b보다 먼저 나오면 -1을 반환합니다. 그리고 같은 문자열이면 0을 반환합니다.
그림 3에서는 jinwoo가 mandu보다 사전상 앞에 위치하므로 -1이 출력된 것을 알 수 있습니다.
3. strncmp( 정한 글자수만큼만 같은지 확인)
strncmp는 strcmp와 다르게 비교할 글자 수를 설정해주는 작업이 필요합니다.
그림 4에 나온 것처럼 비교할 글자수를 정하고 같으면 0, 비교할 값중에서 앞에 값이 사전상 나중에 나오면 1을 반환하고, 반대면 -1을 반환합니다.
4. strcpy(저장할 때 사용)
strcpy는 저장할 문자열의 길이를 파악하여 딱 그 길이만큼만 char형 배열에 복사하고, 문자열 끝에 NULL을 자동으로 붙입니다.
strcpy(저장될 배열명, 저장할 문자열)로 작성하여 이용합니다.
그런데 오류가 나네요 ㅠㅠ 왜 그럴까요. #define _CRT_SECURE_NO_WARNINGS 이거를 안써서 그렇습니다. 메모리에 접근하는 것이다 보니 이것을 위에 써주면 에러가 안 나게 됩니다.
strcpy를 이용하면 for문을 사용할 필요없이 스트링을 복사할 수 있게 되어서 훨씬 편하게 이용할 수 있습니다.
'코딩공부 > C++기초' 카테고리의 다른 글
객체 프로그래밍 C++ (클래스 개념) (0) | 2024.03.08 |
---|---|
객체 프로그래밍 C++ (gets, puts, strncat, strncpy) (0) | 2024.03.07 |
1주차 객체프로그래밍 C++(랜덤한 수 출력) 6 (0) | 2024.03.06 |
객체프로그래밍 1주차 C++ (Escape sequence) 5 (0) | 2024.03.06 |
객체프로그래밍 1주차 C++(연산자) 4 (0) | 2024.03.06 |
댓글