char과 string의 차이

SSamYang·2024년 11월 18일
0

기본 정의

char

  • 단일 문자를 저장하는 데 사용되는 기본 자료형.
  • 1바이트 크기(ASCII 기준)이며, 정수형 데이터로도 간주될 수 있음.
  • 예:
    char c = 'A'; // 단일 문

string

  • *문자열(여러 문자)을 저장하는 데 사용되는 C++ 표준 라이브러리 클래스**.
  • 동적 길이를 가지며, 다양한 문자열 조작 기능을 제공.
  • 예:
    #include <string>
    std::string str = "Hello";

크기 및 메모리

char

  • 고정 크기(1바이트).
  • 단일 문자를 저장할 때 메모리를 거의 사용하지 않음.

string

  • 문자열 길이에 따라 메모리가 동적으로 할당됨.
  • 추가로 메타데이터(문자열의 길이, 동적 관리 정보 등)도 저장됨.

용도

char

  • 단일 문자 데이터에 적합.
  • 배열과 함께 사용하여 C 스타일 문자열을 처리할 수 있음.
    char str[] = "Hello"; // C 스타일 문자열

string

  • C++ 표준 라이브러리에서 제공하며, 문자열 처리에 더 적합.
  • 문자열의 크기를 자동으로 조정하고, 다양한 문자열 연산 기능을 제공.
    std::string str = "Hello";
    str += " World"; // 문자열 결합

기능 및 연산

char

  • 단일 문자 비교, 출력, 산술 연산 등이 가능.
    char c1 = 'A';
    char c2 = 'B';
    if (c1 < c2) {
        std::cout << "A is less than B";
    }
  • C 스타일 문자열 처리 시, 문자열 함수(strlen, strcat 등)를 사용해야 함.
    char str1[10] = "Hello";
    char str2[10] = "World";
    strcat(str1, str2); // str1은 "HelloWorld"가 됨

string

  • 문자열 길이 조정, 검색, 비교, 연결 등 다양한 고수준 기능 제공.
    std::string str1 = "Hello";
    std::string str2 = "World";
    std::string str3 = str1 + " " + str2; // "Hello World"

안전성

char

  • 메모리 관리를 프로그래머가 직접 해야 함.
  • 버퍼 오버플로우와 같은 메모리 관련 오류가 발생할 가능성이 있음.
    char str[5] = "Hello"; // 오류 가능 (버퍼 크기 초과)

string

  • 메모리 관리가 자동으로 이루어짐.
  • 문자열의 길이에 따라 동적으로 메모리를 관리하므로 더 안전함.

속도

char

  • 속도가 더 빠름. 단일 문자나 고정 크기 문자열 작업에 적합.
  • 동적 메모리 할당이 필요하지 않음.

string

  • 속도가 느릴 수 있음. 특히, 문자열 조작이 많아질수록 메모리 할당/해제가 빈번하게 발생.

요약

특성charstring
데이터 타입기본 자료형표준 라이브러리 클래스
용도단일 문자 처리문자열 처리
크기고정(1바이트)동적 길이 (추가 메타데이터 포함)
안전성메모리 관리 수동메모리 관리 자동
속도더 빠름더 느릴 수 있음
기능제한적 (C 스타일 함수 사용)풍부한 문자열 조작 기능 제공

결론

  • 단일 문자나 간단한 C 스타일 문자열을 처리할 때는 *char을 사용.
  • 고급 문자열 처리(결합, 검색, 삽입, 삭제 등)가 필요하거나 코드 안전성을 중시할 때는 *std::string을 사용.
profile
공부 기록장📕

0개의 댓글