배움 저장소

[코테용C++핵심정리] 챔터2. 기본 개념들 본문

Programming Language/C++

[코테용C++핵심정리] 챔터2. 기본 개념들

시옷지읏 2023. 11. 16. 15:35

자료형


리터럴(Literal) : 적어놓은 그대로가 값이다.

char c = 'a'; // 이 때 'a'가 literal

 

변수(Variable) : 변수 이름 그리고 변수이름이 가리키는 메모리 공간

 

형변환

double > int

int i = 987.654;

위 i 값을 출력하면 987. C++표준에서 double > int 형변환은 버림한다.

 

double > float

float f = 567.89;

double 값을 float로 형변환 하였다.

 

불리언

cout << true << endl;			// 1
cout << boolalpha << true << endl;	// true
cout << true << endl;			// true
cout << noboolalpha << true << endl;	// 1

boolalpha 설정은 bool 값을 문자로 출력해준다. 해제하려면 noboolalpha를 설정해주자.

 

논리 연산자의 우선순위

논리 연산자의 우선순위는 insertion 연산자보다 낮다.

괄호를 사용하여 연산 순서를 지정해주자.

cout << (true && true) << endl;
cout << (true || false) << endl;

 

영역(Scope)

변수이름을 사용할 때 좁은 영역의 변수를 먼저 찾고 넓혀나간다.

int main()
{
    int i = 123;
    {
    	int i = 345;
        cout << i << endl; // 345
    }
    cout << i << endl;     // 123
}

 

배열


배열 : 동일한 자료형의 변수 여럿을 묶어놓았다.

 

문자열

문자열의 끝 값 '\0' Null Character

char name[13] = "Hello, World!"; // 보이는 문자 13개

문자열은 항상 마지막 Null Character를 포함하므로 보이는 문자 + 1개의 저장공간이 필요하다.

 

cout의 문자열 출력방식

cout은 Null Character를 만날 때까지 문자를 출력한다.

아래 코드는 "He"를 출력한다.

char name[14] = "Hello, World!"; // 보이는 문자 13개

name[2] = '\0';

cout << name << endl; // He

 

배열의 초기값 지정과 배열의 크기

문자열의 초기값을 할당한다면 크기를 지정하지 않아도 된다.

문자열의 크기에 맞게 저장공간을 할당한다.

char name[] = "Hello, World!";

 

sizeof : 배열이 사용하는 전체 메모리 크기를 반환한다. 원소의 개수가 아니다

 

콘솔 입출력


Extraction Operator ">>"

 

cin

줄바꿈 혹은 띄어쓰기 문자가 있을 때까지 입력값을 받아온다.

 

cin.getline

줄바꿈 혹은 띄어쓰기에 관계없이 입력값을 받아올 수 있다.

char user_input[100];
cin.getline(user_input, sizeof(user_input));

 

cin의 활용

{
    char user_input[100];

    int number = -1;

    cin >> user_input;
    cin >> number;
    cout << user_input << "\n" << number << endl;
    return 0;
}

입력값: 홍정모 1234   |  출력값: 홍정모 1234

입력값: 홍정모 바보    |  출력값: 홍정 0

 

해결방법1

int number = -1;

cin.getline(user_input, sizeof(user_input));

// 숫자 입력값을 별도로 입력받기
cin >> number;

 

해결방법2

int number = -1;

cin >> user_input;
cin.ignore(100, '\n');

cin >> number;

ignore 함수를 사용하기 전에 "홍정모 바보"를 입력하면 user_input과 number에 두 값이 입력된다.

ignore 함수를 사용하면 "홍정모 바보" 입력값이 user_input에 저장되고 새로운 값을 number에 입력하려 대기한다.

 

cin.ignore

cin.ignore(int max, char ignore_from)

첫 번째 파라미터 : 해당 숫자만큼 글자를 입력받고 그 뒤에는 무시하겠다.

두 번째 파라미터 : '\n'이후의 값은 무시한다.

두 조건 중 하나라도 만족할 때부터 그 뒤 값을 무시하겠다

 

참고

stream 크기의 최대를 무시하여 입력값을 받는다.

cin.ignore(numeric_limits<streamsize>::max(),'\n');

 

Comments