배움 저장소
[코테용C++ 핵심정리] 챕터3. 흐름제어 본문
반복
참고 : Character 자료형의 크기는 1byte 이다.
따라서 문자열 크기를 sizeof로 계산할 때 문자 자료형의 크기로 나누어줄 필요가 없다.
char my_string[] = "Hello, World!"; // 배열 크기를 알아서 결정
cout << "size of character = " << sizeof(char) << endl;
for (int i = 0; i < sizeof(my_string); ++i)
{
cout << my_string[i] << endl;
}
반복문으로 문자열을 출력할 때 자료형의 크기 대신 null character를 활용할 수 있다.
for (int i = 0; my_string[i] != '\0'; ++i)
{
cout << my_string[i];
}
Segmentation fault
for(int i=0; my_string[i] != '\n'/*Error*/; ++i)
위와 같이 실수를 했을 때 컴파일 에러를 확인하고 어떤 코드에서 문제가 발생했는지를 찾아보는 과정을 거친다.
메모리 접근에 문제가 발생할 때 Segmentation fault가 발생한다.
해결방법 찾기
debugging
endl
1. 줄바꿈
2. 버퍼 내용을 모두 출력하라
endl이 없을 때 debugging 화면이 비어있을 경우가 있다. cout 출력이 버퍼에 들어간 뒤에 화면으로 옮겨지지 않았다.
줄바꿈 없이 버퍼 내용을 모두 출력시키기 위해서 std::flush를 사용할 수 있다.
cout << i << endl;
cout << i << flush; // 줄바꿈 없이 버퍼 내용을 출력
String vs Character Array
char CharArray[] = "Nice";
cout << sizeof(CharArray) << endl; // 5
string StringStructure = "Nice";
cout << sizeof(StringStructure) << endl; // 40
cout << StringStructure.length() << endl; // 4
숫자 맞추기 게임
난수 생성
// https://en.cppreference.com/w/cpp/numeric/random/uniform_int_distribution
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> distrib(1, 99); // [1, 99]
int number = distrib(gen);
숫자 찾기
[1, 99]를 [1,49] [50,99]
[1,49]를 [1,24] [25,49]
위와 같이 효율적으로 탐색하자.
'Programming Language > C++' 카테고리의 다른 글
[코테용C++ 핵심 정리] 챕터5. 구조 만들기 (0) | 2023.11.18 |
---|---|
[코테용C++ 핵심 정리] 챕터4. 메모리 (0) | 2023.11.18 |
[코테용C++핵심정리] 챔터2. 기본 개념들 (0) | 2023.11.16 |
[코테용C++ 핵심정리] 챕터1. 작동원리 (0) | 2023.11.16 |
[홍정모의 따라하며 배우는 C++] 20. 중급 프로그래머들의 상식 (0) | 2022.01.07 |
Comments