본문 바로가기
Tech, Tech, Tech/C++

C++ 기초 명령어 [2.3 데이터 타입, 자료형][문자를 표현하는 데이터 타입]

by 결기공 2019. 12. 26.

"C++ 기초 명령어" 챕터에서는 C++ 프로그래밍을 하는데 있어 가장 기초적으로 사용되는 명령어들을 몇가지 알아보고 있습니다.

아래의 순서대로 챕터가 진행됩니다.

더보기

- [2.1. 변수와 변수 선언] 

https://beelee.tistory.com/12

 

- [2.2. 데이터 입력 / 데이터 출력] 

https://beelee.tistory.com/16

 

- [2.3. 데이터 타입] 

  • [2.3.1] 숫자를 표현하는 데이터 타입 
  • [2.3.2] 문자를 표현하는 데이터 타입 - 오늘의 주제
  • [2.3.3] 데이터 타입별 호환성

- [2.4. Boolean 데이터 타입]


[2.3.2] 문자를 표현하는 데이터 타입 (자료형)

*데이터 타입과 자료형은 같은 의미의 단어입니다. (한글로는 자료형 영어로는 data type)

 

오늘은, 문자를 표현하는 데이터 타입 (char, string) 그리고 참/거짓을 표현하는 데이터 타입 (bool)에 대해서 알아보도록 하겠습니다.


char 

char 는 'character'의 약자로써, 하나의 문자를 표현하는데 사용됩니다.

메모리 사용량: 1byte (4bit)

 

특징 1. char 가 저장하는 것은 문자 그 자체가 아닌, 문자를 표현하는 ASCII숫자

즉, ('a'를 저장한다면, 그에 해당하는 ASCII 숫자인 97(0x61)이 저장됨)

ASCII 테이블을 외울 필요는 없으며, 필요시 확인하면됩니다.

ASCII 테이블

특징 2. ' 작은 따옴표를 사용

아래 코드처럼, char 데이터 타입에 정보를 저장할 때는 작은 따옴표를 사용합니다.

char alphabet = 'a'

특징 3. 두개 이상의 문자를 입력할 경우, 마지막 문자만 저장

아래 처럼, char 데이터 타입에 'hello'를 저장한다면, 마지막 문자인 'o'만 저장됩니다.

char alphabet = 'hello';
cout<<alphabet;

결과물:

o

string

엄연히, C++에서 string은 데이터 타입이 아닌 클래스로 분류되며, 문장을 저장하는데 사용됩니다. 

이 뜻은, 문장의 길이 만큼 메모리가 사용됨을 의미합니다.

메모리사용량: 문장의 길이만큼

 

특징 1. 라이브러리를 필요로 함 (데이터 타입이 아닌 클래스임)

String은 엄연히 데이터 타입이 아닌 클래스로 분류되기 때문에, 아래처럼 라이브러리를 사용해야 합니다.

(*클래스란 객체지향 프로그래밍에서 사용되는 틀 또는 설계도와 같은 의미이며, 차후에 객체지향 프로그래밍에서 더욱 자세히 알아볼 예정입니다)

#include<string>

 

특징 2. 쌍따옴표 사용

string 클래스에 정보를 저장하기 위해서는 아래 코드처럼 "쌍따옴표를 사용해야합니다.

string A = "쌍따옴표를 사용";

 

특징 3. 덧셈이 가능

두개 이상의 string을 덧셈하면, 합쳐진 결과가 출력됩니다.

즉, 아래처럼 첫번째 string 'A' 와 두번째 string 'B'를 더하면, 합쳐진 결과인 "Hi Hello"가 출력됩니다. 

string A = "Hi ";
string B = "Hello";
cout<<A+B;

 

 

*특징 4. cin을 통하여 string 클래스에 데이터를 입력시, 스페이스를 사용할때까지의 데이터만 저장됨.

string 변수를 선언하고 나서, cin을 통하여 데이터를 입력한다면 스페이스 (white space)전까지의 정보만 저장됩니다.

예를 들어 아래 처럼, string 변수 'A'에 cin을 통해서 "This is a test"라는 데이터를 입력하면, 출력시에 "Test"까지만 출력됩니다.

string A;
cin>>A; //프로그램 실행시, "This is a test"입력
cout<<A;

결과물:

//프로그램을 컴파일/RUN을 하고 "This is a test"를 입력하였다는 가정하에,
This 

 

만약 cin을 통해서 스페이스 (white space)를 포함한 문장까지 입력하기 위해선, getline 명령어를 사용해야 합니다.

string A;
getline(cin, A); //프로그램 실행시, "This is a test"입력
cout<<A;

결과물:

//프로그램을 컴파일/RUN을 하고 "This is a test"를 입력하였다는 가정하에,
This is a test

bool

bool 데이터 타입은 boolean의 약자이며, C에서는 없다가 C++에 생겨난 데이터 타입입니다.

참/거짓을 표현하는데 사용되는 데이터 타입입니다.

메모리 사용량: 1byte (4bit)

 

특징 1. 참/거짓 또는 0/1만 저장 (참 = 0을 제외한 모든 값, 거짓 = 0)

bool 데이터 타입은 참/거짓만을 저장하기때문에, 데이터를 입력할 때는 true / false 또는 1/0만 저장할 수 있습니다.

0이 아닌 모든 값은 true 이며, 0만 false 입니다. (bool 변수 = 398는 true 값입니다)

bool 변수1 = true;
bool 변수2 = false;
bool 변수3 = 0;
bool 변수4 = 1;
bool 변수5 = "this";

cout<<변수1<<변수2<<변수3<<변수4<<변수5;

결과물

10011

변수 1 = true 값이기 때문에 1을 출력

변수 2 = false 값이기 때문에 0을 출력

변수 3 = 0(false)는 0을 출력

변수 4 = 1(true)는 1을 출력

변수 5 = "this"는 0이 아닌값이기 때문에 true를 의미하는 1를 출력

 

특징 2. 대게 bool 은 if 문을 통해서 출력을 함

bool 데이터 타입의 변수를 출력할때는 대게 0/1으로 출력되기 때문에, 실제 프로그램시에는 아래처럼 if 문을 사용하여 결과물을 출력함.

int main() //메인 함수
{
  bool 변수 = 0;

  if(변수 == 0){
    cout<<"오답입니다";
  }else
  {
    cout<<"정답입니다";
  }
}

 

위에서처럼 bool 데이터 타입의 변수를 출력할때는 if 문을 사용하여, 가독성이 좋은 결과가 출력되게 하는 경우가 많습니다.

변수값이 0 (false)면 "오답입니다"를 출력

변수값이 1 (true)면 "정답입니다"를 출력.


부록: sizeof()

 

지금까지 여러가지 숫자와 문자를 표현하는 데이터 타입에 대해서 알아보았습니다.

C++프로그래밍에서는 중요한 컨셉이니 기억하고 있는것이 매우 중요합니다.

다만, 데이터 타입이 사용하는 메모리 용량은 다 기억할 필요가 없으며, 언제든 확인이 필요하면,

sizeof(데이터타입) 명령어를 사용하시면 됩니다.

 

*아래 예처럼 sizeof 명령어를 사용하여, 데이터 타입의 메모리 사용량을 알 수 있습니다

  int 변수 = 100;
 cout<<sizeof(int)<<endl;
 cout<<sizeof(char)<<endl;
 cout<<sizeof(변수); //변수의 크기도 확인 가능

결과물:

4
1
4

sizeof(int) = int 의 메모리 사용량 4가 출력됩니다.

sizeof(char) = char의 메모리 사용량 1이 출력됩니다.

sizeof(변수) = int 데이터 타입의 변수 '변수'의 메모리 사용량 4가 출력됩니다.

댓글