배움 저장소
[코테용C++핵심정리] 챔터2. 기본 개념들 본문
자료형
리터럴(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');
'Programming Language > C++' 카테고리의 다른 글
[코테용C++ 핵심 정리] 챕터4. 메모리 (0) | 2023.11.18 |
---|---|
[코테용C++ 핵심정리] 챕터3. 흐름제어 (0) | 2023.11.17 |
[코테용C++ 핵심정리] 챕터1. 작동원리 (0) | 2023.11.16 |
[홍정모의 따라하며 배우는 C++] 20. 중급 프로그래머들의 상식 (0) | 2022.01.07 |
[홍정모의 따라하며 배우는 C++] 19. 모던 C++ 필수 요소들 (0) | 2022.01.06 |