[C++] 문자열을 나타내는 방식, const char*, char*, string
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 영역에 저장된다.
const char*는 보통 리터럴 문자열 (직접적으로 ""를 사용해서 정의한 문자열)을 저장할 때 사용한다.
#include <iostream>
using namespace std;
int main(void)
{
const char *s = "안녕하세요.";
cout << s << endl;
}
실행 결과