개요
문자열이 주어졌을 때, 사용자 정의 함수 또는 내장 함수를 사용하여 해당 문자열의 길이를 계산하는 것이 이번 글의 목표입니다.
C++에서 문자열의 길이를 구하는 방법은 크게 두 가지가 있습니다.
- 사용자 정의 함수 사용 − 재귀 호출을 활용해 문자열을 한 글자씩 탐색하며, 문자열의 끝을 나타내는 널 문자('\0')를 만날 때까지 카운트를 1씩 증가시키는 방식입니다.
- 내장 함수(strlen) 사용 − "string.h" 헤더 파일에 정의된 strlen() 함수를 사용하는 방법입니다. 이 함수는 문자열 타입의 인수 하나를 받아 해당 문자열의 길이를 정수형 값으로 반환합니다.
예제
입력: str[] = "tutorials point" 출력: 문자열의 길이는 15 설명: "tutorials point"라는 문자열은 알파벳 14글자와 공백 1개로 이루어져 있으므로 전체 길이는 15가 됩니다.
알고리즘
시작
1단계 -> 재귀를 이용해 길이를 구하는 함수 선언
int length(char* str)
IF (*str == '\0')
return 0
End
Else
return 1 + length(str + 1)
End
2단계 -> main() 함수에서
char str[] = "tutorials point" 선언
length(str) 호출
종료
구현 예제 코드
#include <bits/stdc++.h>
using namespace std;
//재귀 함수로 문자열 길이 계산
int length(char* str) {
if (*str == '\0')
return 0;
else
return 1 + length(str + 1);
}
int main() {
char str[] = "tutorials point";
cout<<"length of string is : "<<length(str);
return 0;
}
동작 원리
위 코드의 length() 함수는 문자열의 첫 번째 문자를 먼저 확인합니다. 널 문자가 아니라면 자기 자신을 다음 문자 위치(str + 1)에 대해 다시 호출하면서 1을 더해줍니다. 이러한 재귀 호출이 반복되다가 널 문자에 도달하면 0을 반환하고, 각 호출이 종료되면서 1씩 누적되어 최종적으로 문자열의 전체 길이가 계산됩니다. 시간 복잡도는 문자열 길이에 비례하여 O(n)입니다.
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
length of string is : 15