C++

문자관련 변수 및 사용 함수들(C++)

workbench34 2025. 1. 6. 20:35

 대표적으로 문자관련 변수는 C언어에 2가지가 있다. StringChar 가 그 대표들이다. String은 문자열을 저장하는데 탁월하고 Char는 문자 하나를 저장하는데 사용한다. 그렇다면 이 두가지의 차이와 이 변수들을 사용할때 유용한 함수들을 알아보자.

 

String 클래스

C++에서 String 클래스는 문자열을 다루기 위한 표준 라이브러리 클래스이다. 문자열은 여러 개의 문자가 순서대로 나열된 자료형이며, String 클래스는 이러한 문자열을 객체처럼 다룰 수 있도록 해준다. 즉, 문자열을 하나의 변수처럼 선언하고, 다양한 함수들을 이용하여 문자열을 조작할 수 있다.

장점

  • 편리한 사용: C 스타일의 char 배열에 비해 훨씬 사용하기 쉽다.
  • 자동 메모리 관리: 문자열의 크기가 동적으로 변하므로 메모리 관리에 대한 부담이 적다.
  • 다양한 함수 제공: 문자열 검색, 치환, 비교 등 다양한 기능을 제공하는 함수들이 내장되어 있다.
  • 안전성: 버퍼 오버플로우와 같은 문제 발생 가능성이 적다.

주요 함수

  • 생성 및 초기화:
    • string str;: 빈 문자열 생성
    • string str("Hello");: 특정 문자열로 초기화
    • string str(other_str);: 다른 String 객체 복사
  • 접근:
    • str[index]: 특정 인덱스의 문자에 접근 (단, 수정 가능)
    • str.at(index): 특정 인덱스의 문자에 접근 (범위 검사)
    • str.front(): 첫 번째 문자 반환
    • str.back(): 마지막 문자 반환
  • 길이:
    • str.size(): 문자열의 길이 반환
    • str.length(): size()와 동일
    • str.empty(): 문자열이 비어 있는지 확인
  • 조작:
    • str.append(str2): 문자열 뒤에 다른 문자열 추가
    • str.insert(pos, str2): 특정 위치에 문자열 삽입
    • str.erase(pos, len): 특정 위치부터 len 개의 문자 삭제
    • str.replace(pos, len, str2): 특정 부분을 다른 문자열로 대체
  • 비교:
    • str1 == str2: 두 문자열 비교
    • str1 < str2: 사전순 비교
  • 검색:
    • str.find(str2): 특정 문자열의 위치 찾기
    • str.rfind(str2): 특정 문자열의 마지막 위치 찾기
  • 변환:
    • str.c_str(): C 스타일의 char* 포인터로 변환

 

Char 자료형

C++에서 char 자료형은 문자 하나를 저장하기 위한 가장 작은 단위의 자료형이다. 컴퓨터 내부에서는 문자들이 숫자로 변환되어 저장되는데, 이러한 변환 방식을 문자 인코딩이라고 한다. 대표적인 문자 인코딩 방식으로는 ASCII(American Standard Code for Information Interchange)가 있다.

 

특징

 

  • 1바이트 크기: 일반적으로 char 자료형은 1바이트의 메모리를 차지한다.
  • 문자 저장: 문자 하나를 저장하기 위한 목적으로 사용된다.
  • 숫자로의 변환: ASCII 코드와 같은 문자 인코딩 방식을 통해 숫자로 변환되어 저장된다.
  • 문자 배열: 여러 개의 char 자료형을 연속적으로 배치하여 문자열을 표현할 수 있다.

C표준 라이브러리 함수

  • strcpy(): 문자열을 복사.
  • strcat(): 문자열을 연결.
  • strcmp(): 두 문자열을 비교.
  • strlen(): 문자열의 길이를 반환.
  • strstr(): 문자열에서 특정 문자열을 찾기.

char 자료형과 string 클래스의 비교

특징charstring
크기 고정 (1바이트) 동적
사용 편의성 낮음 (메모리 관리 등) 높음
기능 제한적 다양한 함수 제공
안전성 낮음 (버퍼 오버플로우 가능성) 높음

char는 메모리를 효율적으로 사용할 수 있지만, 문자열을 다룰 때는 직접 메모리를 관리해야 하므로 오류 발생 가능성이 높다. 반면 string은 자동 메모리 관리와 다양한 기능을 제공하여 더욱 편리하게 문자열을 다룰 수 있다.

 

 이렇게 정리하면 String과 Char중 사용편의성과 성능은 모두 String 이 더 좋게 보인다. 이는 String이 C++에서 사용하며 여러 기능들을 갖춘 반면, Char는 C에서 사용하며 여러 제약이 붙어있기 때문이다. 그러나 String이 항상 Char보다 높은 위치에 있는 것은 아니기에 상황에 따라 거기에 맞는 형태의 변수를 선언하면 되겠다.

 

C (char) 스타일 문자열을 사용해야 하는 경우

  • 매우 낮은 수준의 메모리 관리가 필요할 때
  • 호환성을 위해 C 스타일 API를 사용해야 할 때
  • 성능이 매우 중요하고, 문자열 조작이 단순할 때

 

'C++' 카테고리의 다른 글

디자인 패턴 1 - 팩토리 메서드 패턴(C++)  (0) 2025.01.10
디자인 패턴(C++)  (0) 2025.01.08
STL(C++)  (1) 2024.12.31
템플릿(C++)  (0) 2024.12.30
소멸자 (C++)  (1) 2024.12.27