Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++에서 포인터를 활용해 문자열의 모음 개수 세는 방법

포인터를 사용하여 문자열에 포함된 모음의 개수를 구하려면 먼저 문자열, 모음, 그리고 문자열과 포인터를 함께 사용하는 방법에 대한 기본 개념을 이해해야 합니다.

기본 개념 정리

문자열(String)은 문자들의 배열입니다. 모음(Vowel)은 {a, e, i, o, u} 집합에 속하는 문자를 의미합니다. 포인터(Pointer)는 변수가 저장된 메모리 위치(주소) 값을 저장하는 변수입니다.

문자열에서 모음의 개수를 찾는 방법은 간단합니다. 문자열을 처음부터 끝까지 순회하면서 각 문자가 모음과 일치하는지 비교하고, 일치할 경우 카운터 값을 1씩 증가시키면 됩니다.

구현 시 주의사항

아래 예제 코드는 문자열이 모두 소문자로 이루어져 있다는 전제 조건을 가지고 있습니다. 만약 대문자가 포함된 문자열을 다뤄야 한다면, 비교하기 전에 tolower() 함수를 사용하여 문자를 소문자로 변환한 뒤 검사하면 됩니다.

예제 코드

#include <iostream>
using namespace std;
int main() {
   char str[] = "i love tutorials point";
   char *prt ;
   prt = str;
   int count = 0;
   for(prt;(*prt) != '\0'; prt++) {
      if (*prt == 'a' || *prt == 'e' || *prt == 'i'|| *prt == 'o' || *prt == 'u') {
         count++;
      }
   }
   cout << "Vowels in the string: " << count;
   return 0;
}

실행 결과

Vowels in the string: 9

코드 동작 원리

위 코드의 핵심 로직을 살펴보면 다음과 같습니다.

먼저 포인터 prt에 문자열 배열 str의 시작 주소를 할당합니다. 이후 for 반복문에서 포인터가 가리키는 문자가 문자열의 끝을 나타내는 널 문자('\0')가 아닐 때까지 한 글자씩 이동하며(prt++) 검사를 진행합니다.

각 반복마다 역참조 연산자(*)를 통해 현재 가리키고 있는 문자의 실제 값에 접근하고, 이 값이 a, e, i, o, u 중 하나와 일치하는지 확인합니다. 일치하면 count 변수가 증가하고, 최종적으로 반복문이 종료되면 문자열 내 모음의 총 개수가 화면에 출력됩니다.

이 방식은 배열 인덱스를 사용하는 대신 포인터 자체를 순회 변수로 활용하기 때문에, 포인터 산술 연산과 문자열 처리의 관계를 이해하는 데 도움이 되는 좋은 학습 예제입니다.