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언어에서의 문자열에 대한 자세한 내용이 필요하시다면 아래 글을 참고하세요.
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는 일부 글자 수정 불가
}
'C & C++' 카테고리의 다른 글
[C언어/C++] n제곱, n제곱근 구하기 방법 : pow() 함수 (0) | 2022.07.06 |
---|---|
[C언어] 한글 입력/출력 및 유니코드 값 확인 방법(wchar_t 활용) (0) | 2022.06.12 |
[C언어] 정수 배열 및 문자열에서 중복 원소 찾기, 중복 제거 방법 (0) | 2022.06.06 |