Computer/C++

    [C++] cout 관련(3) - 출력 형식 지정

    안녕하세요, katte입니다. 이번 글에서는 cout의 출력 형식을 지정하는 방법에 대해 알아보겠습니다. 출력 형식은 setf 함수를 통해서도 변경할 수 있지만, 조정자나 다른 간편한 함수를 사용할 수 있는 경우에는 해당 방식을 사용하는 것이 더 간편하니 최대한 활용할 수 있는 만큼 활용하는 것이 좋습니다. 따라서 setf에 대해서는 다음 글에서 알아보도록 하고, 이번 글에서는 출력 형식을 지정할 수 있는 몇가지 조정자와 함수에 대해서 알아보겠습니다. ios_base 클래스는 출력 형식을 관장하는 비트마스크 멤버들을 가지고 있습니다. 이러한 비트들은 조정자 혹은 ios_base의 멤버함수를 사용하여 제어할 수 있습니다. 1) 진법 진법은 setf 함수를 통해 제어할 수 있지만, 좀 더 간편한 방식인 조정..

    [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