일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 코테
- Spring
- git
- 해시
- OpenCV
- @Autowired
- nestJS
- nestjs auth
- C++
- TypeORM
- 카카오 알고리즘
- nestjs typeorm
- AWS
- 가상면접사례로배우는대규모시스템설계기초
- 코딩테스트
- python
- 구조체배열
- 알고리즘
- @Component
- 프로그래머스
- 파이썬
- Nodejs
- C언어
- 컴포넌트스캔
- 카카오
- 스프링
- 카카오 코테
- 시스템호출
- thymeleaf
- spring boot
- Today
- Total
공부 기록장 💻
[C/C++] C++ 프로그래밍 기본 본문
( 명품 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++ 문자열
- C-스트링의 char[] 문자배열
- null('\n', 0)문자로 끝나는 char 배열
- <cstring>, <string.h> 헤더 파일 추가
- cin.getline(buffer, int size, delimitChar)
- 최대 (size-1) 개의 문자 입력 받을 수 있음
- delimitChar의 디폴트 값은 '\n' 이므로 생략 가능
- string 클래스의 스트링 객체
- 문자열의 크기에 제약 x
- getline(cin, buffer, delimitChar)
문자열 입력과 string 객체와 관련된 자세한 내용은 아래 글에 작성함
dream-and-develop.tistory.com/53?category=938510
dream-and-develop.tistory.com/55?category=938510
헤더파일에 대하여
- 컴파일러는 컴파일 과정 전에, 전처리기를 실행시켜 #include 문을 모두 처리한다.
- 헤더 파일의 확장: 전처리기는 #include 문에 지정된 <헤더파일>의 텍스트를 그 자리에 삽입한다.
#include <iostream>의 확장
- <iostream> -> <istream> -> <ostream> - > <ios>
헤더 파일의 확장이 모두 끝난 후, cpp 파일이 컴파일 된다.
표준 C++ 헤더파일의 확장자는 없다.
표준 C++ 헤더 파일은 확장자가 없다.를 기억하자
헤더 파일의 사용 이유?
헤더 파일에는 함수의 '원형'(함수 선언)이 들어 있다. 사용하고자 하는 헤더 파일의 함수는 컴파일된 기게어 형태로 C 라이브러리에 들어있다. 헤더 파일은 컴파일 할 때, 사용하려는 함수의 호출이 정확한지 판단하는데 사용된다.
'# Language & Tools > C++' 카테고리의 다른 글
[C/C++] 문자열 처리 함수 c_str(), atoi(), stoi() (0) | 2021.04.09 |
---|---|
[C++] string 클래스 - string 문자열 객체 동적 생성, string 멤버 함수 사용 (0) | 2021.04.07 |
[C++] 클래스와 객체 - 클래스 선언부/구현부, 생성자, 소멸자, 멤버 접근 지정자, 자동 인라인함수, 구조체 (0) | 2021.04.06 |
[C++] 문자열 입력 - <cstring> cin.getline, <string> - getline (0) | 2021.04.06 |
명품 C++ Programming 2장 실습 문제 - C++ 표준 입출력, cin, cout, string 객체, getline 함수 (0) | 2021.03.18 |