복습용/C++

[Unreal Engine 8기] C++ Console IO

조현묵 2026. 3. 18. 20:45
  • Console Output
더보기
  • console-out stream과 stream insertion operator << 
    콘솔창에 글자를 출력하기 위한 방법.
    C언어에서는 printf() 함수를 통해 화면에 출력했다면,
    C++은 cout과 << 연산자를 통해 출력합니다.
  • Manipulator
    cout 키워드를 통한 피연산자의 출력 형식(8진수, 16진수, 문자, …)을 결정하는 키워드.

    // In C Language...
    int Number = 10;
    printf("%x\n", Number); 
    // number를 16진수 출력형식으로 출력.

    // In C++ Language...
    int Number = 10;
    std::cout << std::showbase << std::hex << Number << std::endl; 
    // base는 진법. showbase는 진법 표시을 생략하지 말고 표기하라.
  • namespace와 using
더보기
  • 네임 스페이스(namespace)
    전역변수/전역함수/클래스 등의 이름 충돌을 피하기 위해서 사용하는 키워드
  • 범위 지정 연산자 ::
    어디에 소속되어 있는지 명시하기 위해 사용하는 연산자
  • using 키워드
    타이핑 양을 줄이기 위해서 사용하는 키워드
    ex) std:: 같은 것들을 적지 않아도 되게끔 해줍니다
  • Console Input
더보기
  • cin과 >> 연산자
    C언어의 scanf() 함수와 역할이 유사합니다.
  • cin의 상태 종류
    1. goodbit
      "아무 문제 없음 ", "기본 상태"
    2. eofbit
      "더이상 읽을 입력 데이터가 없음"
    3. failbit
      "읽고자 하는 입력 데이터의 자료형이나 형식이 맞지 않음"
    4. badbit
      "입력 장치의 심각한 오류", 거의 일어나지 않음
  • cin.clear() 함수
    eofbit, failbit, badbit을 unset 시켜주는 함수. 즉, good state가 됩니다
  • cin.ignore() 함수
    파일 끝에 도달하거나 지정한 수 만큼 문자를 버리면 멈춥니다.

    cin.ignore();                // 문자 1개를 버림.
    cin.ignore(10, '\n');        // 문자 10개를 버림. 단, 그 전에 '\n' 문자를 버리면 곧바로 버리는 걸 멈춤.
    cin.ignore(LLONG_MAX, '\n'); // 최대 문자 수를 버림. 단, 그 전에 '\n' 문자를 버리면 곧바로 버리는 걸 멈춤.

  • 참조와 nullptr
더보기
  • 참조(Reference)
    이미 존재하는 변수명에 또 하나의 별명을 붙여주는 문법.
    즉, 변수의 별명을 지어주는 문법입니다

    int Number = 10;
    int& Num = Number;

  • 참조는 NULL을 대입할 수 없습니다.
    포인터는 NULL 대입 가능합니다.

    int& Reference = NULL; 
    // 컴파일 에러.
    // 참조는 반드시 존재하는 변수를 참조해야 함.

  • 참조는 선언과 동시에 반드시 초기화 되어야만 합니다.
    포인터는 초기화 안해도 컴파일 가능합니다.

    int& Reference; // 컴파일 에러

  • 참조는 참조하는 대상을 바꿀 수 없습니다.
    포인터는 참조 하는 대상을 바꿀 수 있습니다.

    int Num1 = 10;
    int Num2 = 20;
    int& RefNum1 = Num1;
    RefNum1 = Num2;

  • 포인터와 참조에 대한 결론
    참조는 안전하지만 자유도가 떨어지고, 포인터는 안전하지 않지만 자유도가 높습니다.
    상황에 따라서 잘 골라서 사용할 필요가 있습니다.
    일단 모든 상황에서 참조를 사용하다가 필요에 따라 포인터로 변경하는 것도 좋습니다.
  • nullptr
    NULL은 정수 0으로 해석될 수 있지만,
    nullptr은 정수로 변환되지 않도록 설계되어 있어서 포인터 상수로 사용 할 수 있습니다