분류 전체보기

    [C++] cout 관련(2) - 출력 버퍼 비우기

    안녕하세요, katte입니다. 이번 글에서는 표준 출력 스트림의 버퍼를 비우는 방법에 대해 다루도록 하겠습니다. 표준 출력 스트림을 통해 바이트들을 보낼 때, ostream 클래스는 cout 객체가 다루는 출력 버퍼를 사용하기 때문에 출력이 버퍼에 쌓이게 됩니다. 그리고 이 버퍼가 가득 차면 버퍼의 데이터를 스트림의 목적지로 보내고, 새로운 데이터를 저장하기 위해 버퍼를 비우게 됩니다. 일반적으로 버퍼의 크기는 512바이트이거나, 그 배수의 크기를 가지고 있습니다. 그러나 출력을 위해 이 버퍼가 가득찰 때까지 기다리는 것은 효율적이지 못합니다. 출력할 내용이 한 줄인데, 이 한 줄의 출력을 위해 512바이트가 가득 찰 때까지 기다릴 수는 없는 셈이니까요. 따라서 프로그램은 버퍼가 가득 찰 때까지 기다리다..

    [C++] cout 관련(1) - write, put 출력 멤버함수

    안녕하세요, katte입니다. cout 객체에 관하여 정리하려고 하는데, 글이 너무 길어질 것 같아서 3~4개 정도의 게시글로 나누어서 올리도록 하겠습니다. 이번 글에서는 operator

    [C++] 입출력과 스트림, 버퍼

    안녕하세요, katte입니다. 오늘은 C++이 입출력을 처리하는 방법에 대해 자세히 알아보도록 하겠습니다. 이전에 다른 글에서 간단하게 언급했던 적이 있는 스트림에 대해 자세히 다뤄보려고 합니다. C++은 모든 입력과 출력을 바이트의 흐름으로 간주하여 처리합니다. 이때, 바이트의 흐름 그 자체를 스트림(stream)이라고 합니다. 좀 더 직관적으로 이해를 돕자면, 스트림은 어떤 장치(혹은 파일)와 프로그램 사이를 잇는 호스와 같은 존재라고 생각할 수 있을 것 같습니다. 매개체죠. 예를 들어, 입력 스트림의 경우 바이트가 흘러 들어오는, 바이트의 발생지(파일, 키보드 등)와 바이트를 받아들여 정보를 처리할 프로그램 사이를 매개합니다. 반면 출력 스트림은, 프로그램과 바이트를 진열할 최종 목적지(모니터, 파..

    [C++] cin 잘못된 입력 판별하기, 입력 버퍼 비우기

    안녕하세요, katte입니다. 이번 글에서는 cin 객체가 문자를 받아올 때 cin 객체를 리턴하는 것을 이용한 간단한 예제를 살펴보도록 하겠습니다. 이전 글에서 istream의 멤버함수, get이 cin 객체를 리턴한다는 이야기를 했던 적이 있습니다. 또한 이렇게 리턴된 cin 객체가 bool형으로 변환된다는 것까지 말이죠. 자세한 내용은 다음 글을 참고하시길 바랍니다. https://katteniiki.tistory.com/10 [C++] EOF에 관한 이야기 안녕하세요, katte입니다. 이번 글에서는 EOF, End of File의 개념과 스트림에 대해 알아보고, 추가적으로 istream의 멤버함수 get이 EOF를 다루는 방식에 대해서 이야기하도록 하겠습니다. 제가 현재 C++ katteniik..

    [C++] cctype 라이브러리 소개

    안녕하세요, katte입니다. 오늘은 문자를 다룰 때 유용하게 사용할 수 있는 라이브러리를 소개하려고 합니다. C언어에서는 를 include하여 사용할 수 있습니다. 라이브러리는 어떤 숫자가 대문자인지, 숫자인지, 구두점 문자인지 등을 판별할 수 있는 함수를 제공합니다. 이번 글에서는 딱히 구구절절 설명할 내용은 없을 것 같고, 이 라이브러리가 제공하는 함수들을 정리하고 마치려 합니다. isalpha(ch) ch가 알파벳 문자이면 0이 아닌 값을, 그렇지 않으면 0을 리턴한다. ispunct(ch) ch가 콤마나 마침표 같은 구두점 문자이면 (이하동문) isdigit(ch) ch가 10진 숫자이면 isspace(ch) ch가 개행, 빈칸, 탭, 캐리지 리턴과 같은 화이트스페이스이면 isalnum(ch) ..

    [C++] EOF에 관한 이야기

    보호되어 있는 글입니다.

    [C++] Range 기반의 for 루프 사용하기

    안녕하세요, katte입니다. 이번 글에서는 Range 기반 for 루프에 대해 알아보겠습니다. Range 기반의 for 루프는 C++11에서 추가된 기능입니다. 지금까지 우리는 for 루프를 사용하여 배열 요소에 접근할 때, 다음과 같은 방법을 사용해야 했습니다. int arr[5] = { 1,2,3,4,5 }; for (int i = 0; i < 5; ++i) std::cout

    [C++] ctime, clock()으로 경과한 시간 불러오기

    안녕하세요, katte입니다. 이번 글에서는 헤더 파일 , c언어에서는 를 사용하여 지연시간을 다루는 방법에 대해서 알아보겠습니다. 코드를 짜다보면 현실의 시간을 사용해야 할 때가 꽤 있습니다. 프로그램이 실행된 시점에서 특정 시점까지의 지연시간을 재거나, 어떤 상태로 수 초간 대기를 해야 하는 상황이 있을 수 있겠죠. 이런 경우를 위해 C++은 이라는 헤더파일을 제공합니다. C언어에서는 대신 를 include하여 사용할 수 있습니다. 먼저 에 정의되어있는 clock() 함수는 프로그램이 실행된 시점을 기준으로, 이 함수가 호출된 시점까지 경과한 시간을 리턴합니다. 이 함수의 원형을 살펴보자면 다음과 같습니다. clock_t clock(void); 리턴형을 보시면 clock_t라는 생소한 자료형이 보이실..