TIL_022: 파일 입출력, stringstream, cls/pause, 디버깅 팁

김펭귄·2025년 8월 27일

Today What I Learned (TIL)

목록 보기
22/93

오늘 학습 키워드

  • 파일 입출력

  • stringstream

  • system("cls") / system("pause")

  • 전처리기

1. 파일 입출력

  • stream: 데이터 스트림의 약자로 데이터가 흘러들어오는 물줄기를 말함

  • 데이터 스트림의 종류

    1. stdin stream: 키보드를 통해 들어오는 입력 데이터 스트림
    2. stdout stream: 콘솔(cmd)을 통한 나가는 출력스트림
    3. File stream: 입출력이 가능한 파일스트림
    4. String stream: 입출력이 가능한 문자열 스트림
  • 파일을 한 줄씩 버퍼로 가져오고 한 줄씩 읽는식으로 보통 처리

2. stringstream

  • >>연산자를 통해 공백을 기준으로 문자열 추출 가능

3. system("cls") / system("pause")

system("cls")

  • Windows 명령 프롬프트에서 화면을 깨끗하게 지우는 명령

  • linux cmd에서 clear 명령어와 비슷한 효과

  • #include <cstdlib> 헤더 포함, MS Windows 전용

#include <cstdlib>
int main() {
	cout << "~~~~ so many print~~~";
    system("cls");  // 화면 초기화
}

system("pause")

  • Windows의 pause 명령을 호출해 "Press any key to continue..." 메시지를 출력하고, 사용자의 키 입력을 기다림

  • 텍스트 기반 게임에서 결과를 보고 넘어가고 싶을 때 또는, 프로그램의 종료 전에 출력 결과를 확인할 시간을 주기 위해 사용

    #include <cstdlib>
    int main() {
    	cout << "~~~~ so many print~~~";
        system("pause");  // 키 입력 대기
    }

주의사항

  • system() 함수는 운영체제 쉘 명령을 호출하므로, 보안상 위험이식성 문제가 있을 수 있다

  • 가능하면 표준 C++ 기능으로 대체

4. 전처리기

  • 전처리기는 컴파일 하기 전에 #붙은 것을 먼저 처리해줌

  • 그 외에도 __FILE__ 은 해당 파일 정보를, __LINE__은 소스코드 내 행 번호 , __FUNCTION__은 현재 함수의 이름 등 이런 정보를 전처리기가 문자열로 치환해줌

#include <iostream>

void myFunction() {
	std::cout << __FUNCTION__ << std::endl;
    std::cout << __FILE__ << std::endl;
    std::cout << __LINE__ << std::endl;
}

int main() {
    myFunction();	
}
// myFunction 
// main.cpp
// 6
  • 또 Debug에서는 log보이게 하고 Release 버젼에서는 안 보이게 하는 것도 가능
void CPP_LOG(const char* InMessage) 
{
#ifdef _DEBUG
    std::cout << InMessage << std::endl;
#endif
}

int main() 
{
    CPP_LOG("프로그램 시작");
}
// Debug 버젼에서는 "프로그램 시작"이 출력됨
// Release 버젼으로 바꾸면 출력 안 됨

5. assert()

  • 내가 만든 함수에 절대로 들어오면 안되는 값이 들어오는 것을 막기 위해 사용
#include <cassert>

int Divide(int InA, int InB)
{
    assert(InB != 0);	// 값이 0이면 에러가 남
    // assert(InB != 0 && "InB is invalid."); // 로그도 알려줌
    return InA / InB;
}

int main() 
{
    Result = Divide(10, 0);
}
profile
반갑습니다

0개의 댓글