객체 프로그래밍 C++ (스트링 응용 strlen, strcpy, strncpy, strcpy)
본문 바로가기
코딩공부/C++기초

객체 프로그래밍 C++ (스트링 응용 strlen, strcpy, strncpy, strcpy)

by 지누이야기 2024. 3. 6.
반응형

앞에서 문자열 배열과 포인터 배열을 통해서 문자열을 어떻게 나타내고 두 개의 차이가 무엇인지 배웠습니다.

 

이번 시간에는 이같이 문자열을 쓸 때마다 배열을 쓰지 않고 편하게 쓸 수 있는 방법을 알려드리도록 하겠습니다. 그리고 활용법도 같이 알려주도록 하겠습니다.

 

만약 문자열을 편하게 사용하려면 스트링 라이브러리를 가져와야 됩니다.

 

#include<string>을 먼저 처음에 써줍니다. 이제부터 string 라이브러리에 있는 내장함수(?)들을 하나씩 알려드리겠습니다.

 

1. strlen(문자열 길이 계산)

 

만약 이 함수를 사용하지 않고 문자열의 길이를 계산한다면 개행 문자가 나올 때까지 이동시키고 계산해주는 코드를 짜야됩니다. 그러나 이 함수를 사용하면 한 번에 문자열 길이를 계산할 수 있습니다. 

 

그림 1

 

이런식으로 strlen(배열이름)을 넣어서 사용하면 됩니다. 그림 1을 보면 알겠지만 jinwoo 총 6글자인걸 잘 알려주고 있습니다.

 

sizeof 함수와의 차이점은 sizeof는 문자열을 저장하는 배열 자체의 길이를 말하고 strlen은 문자열의 길이를 말합니다.

 

그림 2

 

2. strcmp(문자열을 비교하고, 두 문자열의 dictionary 순서를 파악할 때 사용)

 

예를 들어 strcmp(a,b)가 있으면 a가 b보다 나중에 나오면 1을 반환하고, a가 b보다 먼저 나오면 -1을 반환합니다. 그리고 같은 문자열이면 0을 반환합니다.

 

그림 3

 

그림 3에서는 jinwoo가 mandu보다 사전상 앞에 위치하므로 -1이 출력된 것을 알 수 있습니다. 

 

3. strncmp( 정한 글자수만큼만 같은지 확인)

 

strncmp는 strcmp와 다르게 비교할 글자 수를 설정해주는 작업이 필요합니다.

 

그림 4

 

그림 4에 나온 것처럼 비교할 글자수를 정하고 같으면 0,  비교할 값중에서 앞에 값이 사전상 나중에 나오면 1을 반환하고, 반대면 -1을 반환합니다. 

 

4. strcpy(저장할 때 사용)

 

strcpy는 저장할 문자열의 길이를 파악하여 딱 그 길이만큼만 char형 배열에 복사하고, 문자열 끝에 NULL을 자동으로 붙입니다.

 

strcpy(저장될 배열명, 저장할 문자열)로 작성하여 이용합니다.

 

그림 5

 

그런데 오류가 나네요 ㅠㅠ 왜 그럴까요. #define _CRT_SECURE_NO_WARNINGS 이거를 안써서 그렇습니다. 메모리에 접근하는 것이다 보니 이것을 위에 써주면 에러가 안 나게 됩니다.

 

그림 6

strcpy를 이용하면 for문을 사용할 필요없이 스트링을 복사할 수 있게 되어서 훨씬 편하게 이용할 수 있습니다.

반응형

댓글