C & C++

[C++] 문자열 string vs char 배열 선언 방식 비교

jimmy_AI 2022. 6. 13. 19:30
반응형

C++ 문자열 string vs char array 차이 비교 예제

C++에서 문자열을 string으로 선언하는 경우와 char 배열로 선언하는 경우의

예시 코드를 토대로 두 경우의 차이를 비교해보도록 하겠습니다.

 

 

string 선언 방식의 문자열

C++에서는 <string> 헤더 파일을 포함하게 된다면

string 타입으로 문자열을 선언하여 매우 편리하게 다룰 수 있게 됩니다.

 

해당 타입으로 문자열을 선언 뒤, 일부 글자를 수정해보고 문자열의 길이를 출력해보는

예시 코드는 아래와 같습니다.

#include <iostream>
#include <string>

using namespace std;

int main() {
  
// 문자열 선언
string a = "hello!\n";

cout << a; // hello!\n 출력

// 문자열 수정
a[0] = 'j';

cout << a; // jello!\n 출력

// 문자열 길이 출력
cout << a.length(); // 7
  
}

문자열은 쌍따옴표(" ")로 감싸야한다는 점에 유의해주셔야 하며,

길이는 length() 메소드로 가져올 수 있고,

문자열의 전체 글자수(줄바꿈 문자 포함)인 7로 자동 지정되었음을 볼 수 있었습니다.

 

반응형

 

char 배열 선언 방식의 문자열

C++에서도 C언어처럼 char 배열로도 문자열을 선언하는 것이 가능합니다.

 

참고로, C언어에서의 문자열에 대한 자세한 내용이 필요하시다면 아래 글을 참고하세요.

 

[C언어] 문자열 선언 방법 정리(배열, 포인터)

C언어 string 배열 및 포인터 선언 예제 및 특징 비교 C언어에서 문자열(string) 자료를 char 배열로 선언하는 경우와 포인터를 이용하여 선언하는 경우의 예시 코드를 살펴보고, 이 두 문자열 선언 경

jimmy-ai.tistory.com

 

char 배열 형태로 문자열을 선언하는 경우는 <string> 헤더 파일을 포함할 필요는 없으며,

선언 시 null 문자를 고려하여 필요한 글자수보다 최소 1개 이상 더 크게 선언해주셔야 합니다.

그리고 길이 출력 시에는 length() 메소드가 아닌 sizeof 함수를 사용하셔야 합니다.

 

C++에서 char 배열로 문자열을 선언하는 예시 코드는 아래와 같습니다.

#include <iostream>

using namespace std;

int main() {
  
// 문자열 선언
char a[8] = "hello!\n";

cout << a; // hello!\n 출력

// 문자열 수정
a[0] = 'j';

cout << a; // jello!\n 출력

// 문자열 길이 출력
cout << sizeof(a); // 8
  
}

여기서는 위에서 설명한대로 7글자로 구성된 "hello!\n"를 담기 위하여

최소 8칸의 공간이 필요함에 유의해주세요.

(다만, 더 넉넉한 크기의 공간 지정 선언도 가능하며, char a[] 처럼 자동 길이 지정 시에는

최소 필요 크기(위의 예시에서는 8칸)로 자동 지정됩니다.)

 

여담으로, C++에서는 char 포인터 형식으로 문자열을 선언하기 위해서는

내용을 수정할 수 없다는 특성이 반영되어

일반 char*가 아닌 const char* 형태로 선언해주셔야 합니다.

#include <iostream>

using namespace std;

int main() {
  
const char* a = "hello!\n"; // 가능
char* b = "hello!\n"; // 불가능

// 이후 a는 일부 글자 수정 불가
  
}