Minwoo Dev.

[C++] 문자열을 나타내는 방식, const char*, char*, string 본문

C++

[C++] 문자열을 나타내는 방식, const char*, char*, string

itisminu 2024. 5. 25. 20:24
728x90
반응형
SMALL

string

문자열을 저장하기 위해서 char형 배열을 사용해야 했던 C언어와는 달리, C++에서는 문자열을 다룰 수 있는 string이 존재한다.

변수형처럼 사용하지만, 실제로 string은 클래스(class)이다.

#include <iostream>
using namespace std;

int main(void)
{
    string s = "안녕하세요.";
    cout << s << endl;
}

 

실행 결과

 

 


 

char* 

C언어에서 많이 사용되는 문자열 표현 방식.

문자 하나를 저장할 수 있는 char을 여러 개 연결하여 배열처럼 사용한다.

포인터 값이기 때문에 변수 안에는 문자열의 시작 주소가 담겨있다.

#include <iostream>
using namespace std;

int main(void)
{
    char *s = "안녕하세요.";
    cout << s << endl;
}

 

실행 결과

 

 

vscode에서는 에러가 아니라 경고가 발생하지만, const char*과 char*의 차이점은 char*은 문자 리터럴을 담지 못한다는 것이다.

 

char *s = "hidmn"과 같이 문자열 리터럴을 입력하면 일반적으로 에러가 발생한다.

 

사용할 순 있지만 이렇게 에러를 발생시키는 이유는 "문자열"이라는 것이 애초에 만들어지고 난 이후에는 변경이 불가능해야 하기 때문이다.

그러한 의미에서 const char*을 자주 사용하게 된다.


 

const char*

리터럴 문자열이라고도 불리며, 메모리 구조 상에 data 영역에 저장된다.

출처 - https://www.google.com/url?sa=i&url=https%3A%2F%2Fvelog.io%2F%40ymsection%2FC%25EC%2596%25B8%25EC%2596%25B4-%25EB%25A9%2594%25EB%25AA%25A8%25EB%25A6%25AC-%25EA%25B5%25AC%25EC%25A1%25B0-12&psig=AOvVaw2_GEONkNKNMvf-sD9bXoLh&ust=1716721364885000&source=images&cd=vfe&opi=89978449&ved=0CBQQjhxqFwoTCLj00MrTqIYDFQAAAAAdAAAAABBB

 

const char*는 보통 리터럴 문자열 (직접적으로 ""를 사용해서 정의한 문자열)을 저장할 때 사용한다.

 

#include <iostream>
using namespace std;

int main(void)
{
    const char *s = "안녕하세요.";
    cout << s << endl;
}

 

실행 결과

 

 

728x90
반응형
LIST