정신과 시간의 방
작성일
2022. 8. 9. 22:46
작성자
risehyun

2.1 C++ 프로그램의 기본 요소와 화면 출력

  • main() 함수
    - c언어와 마찬가지로 main() 함수는 c++ 프로그램의 실행 시작점이 됨.
    - c++ 응용 프로그램에는 반드시 하나의 main() 함수가 존재해야 하며, main() 함수가 종료하면 프로그램이 종료됨.
    - c++ 표준에서 정한 main() 함수의 리턴 타입은 int이며 간혹 void를 리턴 타입으로 선언하기도 하지만 이는 표준이 아님.

    - 일반적으로 int를 반환하는 함수는 정수 리턴 return 문을 가지고 있어야 하지만 int main() 함수에서는 return문 생략 가능함.
    - return 문이 생략되는 경우 main 함수 종료시 자동으로 return 0;이 실행됨.
    - 엄밀히 말하면 0이 아닌 다른 정수를 리턴한다고 해도 상관이 없는데, 자식 프로그램의 main() 함수 종료 시 리턴 값을 부모 프로그램에게 전달함으로써 프로그램의 종료 상태를 알리도록 되어 있으나 기본적으로 모든 프로그램의 부모는 운영체제이며 운영체제와 응용프로그램 사이에 특별한 종료 관계가 설정되어 있지 않기 때문임.

  • #include <iostream>
    - 전처리기에 대한 지시문으로서, C++ 소스 파일을 컴파일하기 전에 <iostream> 헤더 파일을 읽어 C++ 소스 파일 안에 삽입할 것을 지시하는 것. (간단히 말해서 헤더 파일 안의 내용을 복붙)
    - 따라서 C++ 컴파일러는 처음에 전처리기를 호출해 #include로 된 라인을 모두 처리한 후, C++ 소스 파일을 컴파일함.

  • 화면출력
    - << 연산자 : 본래 << 연산자는 정수를 왼쪽으로 시프트하는 C++의 기본 연산자이지만, 'cout <<' 와 같이 쓰였을 때는 출력 스트림에 데이터를 삽입하는 삽입 연산자로 iostream 헤더 파일에 재정의 되어 cout과 함께 사용된다.
    - cout << 조합으로 문자열 뿐만 아니라 bool, char, short, int, long, float, double을 출력할 수 있으며 bool의 경우 boolalpha 키워드를 사용해서 아래와 같이 출력할 수 있다.
bool a = true;

cout << boolalpha << a << '\n';

// true가 출력된다.

 

  • '\n'과 endl 조작자
    - '\n'은 << 연산자가 '\n' 문자를 cout의 스트림 버퍼에 단순히 삽입하고 끝난다. 이후 cout 스트림 버퍼가 꽉 차거나 강제 출력 지시가 있는 경우, cout은 '\n'을 해석하여 커서를 다음 줄로 넘긴다.
    - 반면 endl()은 <iostream> 헤더 파일에 저장되어 있는 함수로 << 연산자가 endl() 함수를 호출함. endl() 함수는 '\n'을 cout의 스트림 버퍼에 넣고 cout에게 현재 스트림 버퍼에 있는 데이터를 즉각 장치에 출력하도록 지시하므로 커서를 다음줄로 넘기는 것과 동시에 현재 cout의 스트림 버퍼에 있는 모든 데이터를 출력한다.

2.4 키보드로 문자열 입력

 - C++에서 문자열은 기본 자료형이 아닌 사용자 정의 자료형으로 존재하며 C언어에서 문자열을 표현하는 방법을 그대로 사용하는 C-스트링 방식과 문자를 객체로 다루기 위해 C++ 표준 라이브러리의 string 클래스를 이용하는 방법 중 하나를 택해 사용할 수 있다.

- C-스트링의 경우 배열의 크기에 의해 문자열의 크기가 고정되는 불편함이 있으나 string에는 크기 제약이 없고 객체지향적이며 문자열 연산을 위한 멤버 함수와 연산자가 제공되어 문자열을 다루기 쉬우므로 string 방식을 사용하는 것이 권장된다.
 - cin과 >> 연산자를 이용하면 문자열을 읽되 빈칸이 포함된 문자열은 읽지 못한다. >> 연산자가 공백 문자를 만나면 그때까지 입력된 문자등릉 하나의 문자열로 인식하기 때문이다. 이때는 cin.getline() 함수를 이용해 빈칸까지 포함한 문자열을 읽어들일 수 있다.

 

'C,C++ > [서적] 명품 C++ 프로그래밍' 카테고리의 다른 글

06. 함수 중복과 static 멤버  (0) 2022.10.14
05. 함수와 참조, 복사 생성자  (0) 2022.10.09
03. 클래스와 객체  (0) 2022.09.16
01. C++ 시작  (0) 2022.07.13