관리 메뉴

공부 기록장 💻

[C/C++] C++ 프로그래밍 기본 본문

# Language & Tools/C++

[C/C++] C++ 프로그래밍 기본

dream_for 2021. 3. 17. 12:57

( 명품 C++ 프로그래밍 ch2 )

C++ 기본 요소와 화면 출력

 

 

주석문

- // 한줄 주석

- /* 이 안의 모든 내용 주석 */ 

 

 

main함수

- C++의 main() 함수의 표준은 다음과 같다. (리턴타입 int형)

- return 문은 생략 가능하다. 

int main() {
...
	return 0;
}

 

 

#include <iostream>

- #include 전처리기(preprocessor) 에 대한 지시문

- <iostream> 헤더파일: C++ 표준 입출력을 위한 클래스와 객체가 선언되어 있다. (cout객체, <<연산자, cin객체, >>연산자)

 

 

화면 출력

std::cout<<"Hi"<<std::endl<<"Hello"<<std::endl;

 

- cout 객체: C++ 표준 출력 스트림 객체(standard output stream object)

- std:: 접두어: cout의 이름 공간(namespace)

- << 연산자: 스트림 삽입 연산자(stream insertion oeprator) - 오른쪽 피연산자 데이터를 왼쪽 스트림 객체에 삽입

- 본래 정수를 왼쪽으로 시프트하는 C++ 기본 연산자이지만, 출력 스트림에 데이터를 삽입하는 삽입 연산자로 <iostream> 헤더 파일에 재정의(operator overloading)되어 cout과 함께 사용한다.

 

 

 

endl 조작자

- 다음 줄로 넘어가기 위한 조작자(manipulator)

- C의 '\n' 개행 문자와 비슷한 역할을 한다. endl() 함수는 '\n'을 cout의 스트림 버퍼에 넣고, cout에게 현재 스트림 버퍼에 있는 데이터를 즉각 장치에 출력하도록 한다. 현재 cout의 스트림 버퍼에 있는 모든 데이터를 출력시키게 된다.

- <iostream> 헤더 파일에 작성되어 있는 함수

 

 

 

C++ 기본 데이터 타입

- bool(true=1, false=0), char, short, int long, float, double 등

 

 


namespace, std::

 

namespace(이름 공간) 키워드와 범위 지정 연산자(::)

 

- 여러 프로젝트나 여러 사람들이 작성한 프로그램에서 변수, 함수, 클래스 등의 이름(identifier)이 충돌하는 것을 막기 위해 개발자가 자신만의 고유한 이름 공간을 생성 가능

- 범위 지정 연산자(::) : C++ 표준 연산자

 

// 이름공간(namepsace) :: 이름(identifier)

// 이름 공간 생성 (헤더 파일)
namespace kitae{
	int f(){ return 1; }
   	int m(){ return -1; }
}

// 이름 공간의 함수 사용(cpp 파일)
int n = kitae::f();
int m = kitae::m();

 

 

std:: 표준 이름 공간

- C++ 표준에서 정한 표준 이름 공간

- 모든 C++ 표준 라이브러리(표준 입출력 헤더 파일 <iostream> 등_는 std 이름 공간에 만들어져 있다.

 

 

 

using 지시어를 사용한 std:: 생략

 

using std::cout; // cout에 대해서만 std:: 생략

cout << "Hello" << std::endl;

 

위 예제는 이름 공간 std에 선언된 cout에 대해서만 생략하였다. (범위 지정 연산자를 이용하여 std 접두어를 붙였다. std::cout에 대하여 std:: 를 생략 가능)

아래 에제는 std 이름 공간에 선언된 모든 이름에 대하여 std:: 를 생략하였다.

<iostream> 헤더 파일 내에 선언된 모든 클래스, 객체, 함수를 사용할 때 std:: 를 전부 생략 가능하다.

 

#include <iostream>
using namespace std;

cout << "Hello" << endl;

 

 


키 입력 받기(cin>>)

 

cin 객체

- <iostream> 헤더 파일에 선언된 C++ 표준 입력스트림 객체(standard input stream object)

 

>> 연산자

- <iostream>에 선언된 스트림 추출 연산자(stream extraction operator)

- 왼쪽 피연산자인 스트림 객체로부터 데이터를 읽어 오른쪽 피연산자에 지정된 변수에 삽입

- 정수를 시프트 하는 C++ 기본 연산자이지만, <isotream> 헤더파일에 스트림 추출 연산자로 재정의(operator overloading)됨

 

 

사용자가 입력한 키들은 임시적으로 cin의 스트림 버퍼에 저장되며,

<Enter> 키가 입력되면 >> 연산자가 cin 입력 버퍼에서 키 값을 끌어 내어 변수에 저장한다.

 

int width, height;

cout<<"너비와 높이 입력 : ";
cin >> width >> height; // enter키 칠 때 변수에 키 값 전달

 

 


문자열 입력

 

cin >> 연산자로 문자열 입력 받을 때의 허점

- 공백 문자를 만나면 그 전까지 입력된 문자들만 하나의 문자열로 인식

 

 

C++ 문자열

 

  1. C-스트링의 char[] 문자배열
    1. null('\n', 0)문자로 끝나는 char 배열
    2. <cstring>, <string.h> 헤더 파일 추가
    3. cin.getline(buffer, int size, delimitChar)
      • 최대 (size-1) 개의 문자 입력 받을 수 있음
      • delimitChar의 디폴트 값은 '\n' 이므로 생략 가능
  2. string 클래스의 스트링 객체
    1.  문자열의 크기에 제약 x
    2. getline(cin, buffer, delimitChar) 

 

 

문자열 입력과 string 객체와 관련된 자세한 내용은 아래 글에 작성함

 

dream-and-develop.tistory.com/53?category=938510

 

[C++] 문자열 입력 - cin.getline, - getline

(명품 C++ 프로그래밍 ch 2.4) C++ 에서 문자열을 표현하는 방법에는 두 가지가 있다: C-스트링 / string 클래스 1. C-스트링 - NULL(0, '\0') 문자로 끝나는 char 배열 - #include - #include - C언어에서 사용하..

dream-and-develop.tistory.com

dream-and-develop.tistory.com/55?category=938510

 

[C++] string 클래스 - string 문자열 객체 동적 생성, string 멤버 함수 사용

(명품 C++ 프로그래밍 ch 4.6) string 클래스 - C++ 표준 라이브러리에서 제공하는 클래스로서, 문자열을 객체로 다룬다. - 문자열을 저장하는버퍼와 함께, 문자열을 다루는 함수, 연산자를 멤버로 가

dream-and-develop.tistory.com

 

 


헤더파일에 대하여

 

- 컴파일러는 컴파일 과정 전에, 전처리기를 실행시켜 #include 문을 모두 처리한다.

- 헤더 파일의 확장: 전처리기는 #include 문에 지정된 <헤더파일>의 텍스트를 그 자리에 삽입한다.

 

 

#include <iostream>의 확장

- <iostream> -> <istream> -> <ostream> - > <ios>

헤더 파일의 확장이 모두 끝난 후, cpp 파일이 컴파일 된다.

 

 

표준 C++ 헤더파일의 확장자는 없다.

표준 C++ 헤더 파일은 확장자가 없다.를 기억하자

 

 

헤더 파일의 사용 이유?

헤더 파일에는 함수의 '원형'(함수 선언)이 들어 있다. 사용하고자 하는 헤더 파일의 함수는 컴파일된 기게어 형태로 C 라이브러리에 들어있다. 헤더 파일은 컴파일 할 때, 사용하려는 함수의 호출이 정확한지 판단하는데 사용된다.

 

728x90
반응형
Comments