1. C++ 기본 요소와 화면 출력
1) 소스파일의 확장자 cpp
- C 프로그램의 소스 파일: *.c 파일
- C++ 프로그램의 소스 파일: *.cpp 파일
2) main() 함수
- C++ 프로그램의 실행을 시작하는 함수
- main() 함수가 종료되면 C++ 프로그램도 종료
- main() 함수의 C++ 표준 모양
int main() //main()의 리턴 타임 int
{
........
return 0;
}
3) #include<iostream>
- 전처리기에게 내리는 지시
- <iostream> 헤더 파일을 컴파일 전에 소스에 확장하도록 지시
- <iostream> 헤더파일
- 표준 입출력을 위한 클래스와 객체, 변수 등이 선언
- 스트림(stream)
- 데이터의 흐름, 혹은 데이터를 전송하는 소프트웨어 모듈
- 스트림의 양 끝에는 프로그램과 장치 연결
- 보낸 순서대로 데이터 전달
- 종류
- 입력 스트림
- 입력 장치, 네트워크, 파일로부터 데이터를 프로그램으로 전달하는 스트림
- 출력 스트림
- 프로그램에서 출력되는 데이터를 출력 장치, 네트워크, 파일로 전달하는 스트림
- 입력 스트림
- C++ 입출력 스트림은 버퍼를 가짐
- 키 입력 스트림의 버퍼
- 목적
- 입력장치로부터 입력된 데이터를 프로그램으로 전달하기 전에 일시 저장
- 키 입력 도중 수정 가능
- <backspace>키가 입력되면 이전에 입력된 키를 버퍼에서 지움
- 프로그램은 사용자의 키 입력이 끝난 시점에서 읽음
- <Enter>키가 입력된 시점부터 키 입력 버퍼에서 프로그램이 읽기 시작
- 목적
- 스크린 출력 스트림 버퍼
- 목적
- 프로그램에서 출력된 데이터를 출력 장치로 보내기 전에 일시 저장
- 출력 장치를 반복적으로 사용하는 비효율성 개선
- 버퍼가 꽉 차거나 강제 출력 명령 시에 출력 장치에 출력
- 목적
- 키 입력 스트림의 버퍼
4) 출력 객체인 cout을 이용한 화면 출력
- C++에서의 출력
- 출력 객체인 cout을 이용
- "cout<<값" 형식으로 출력
- << 연산자 다음에 기본형의 변수를 지정하면 자동으로 데이터 형에 맞추어 출력
- 정수, 실수, 문자열 출력 가능
- cout 객체
- 스크린 출력 장치에 연결된 표준 C++ 출력 스트림 객체
- <iostream> 헤더 파일에 선언
- std 이름 공간에 선언: std::cout으로 사용
#include<iostream>
int main()
{
std::cout<<"Hello\n";
return 0;
}
- <<연산자
- 스트림 삽입 연산자
- C++ 기본 산술 시프트 연산자(<<)가 스트림 삽입 연산자로 재정의됨
- cout 객체에 연결된 화면에 출력
- 여러 개의 << 연산자로 여러 값 출력
- 스트림 삽입 연산자
#include<iostream>
int main()
{
std::cout<<"Hello\n"<<"How are you?\n";
return 0;
}
Ex)
#include <iostream>
double area(int r); // 함수의 원형 선언
double area(int r)
{ // 함수 구현
return 3.14*r*r; // 반지름 r의 원면적 리턴
}
int main()
{
int n=3;
char c='#';
std::cout << c << 5.5 << '-' << n << "hello" << true << std::endl;
std::cout << "n + 5 = " << n + 5 << '\n';
std::cout << "면적은 " << area(n); // 함수 area()의 리턴 값 출력
}
2. namespace
1) namespace 개념
- 이름(identifier) 충돌이 발생하는 경우
- 여러 명이 서로 나누어 프로젝트 개발하는 경우
- 오픈 소스 혹은 다른 사람이 작성한 소스나 목적 파일을 가져와서 컴파일 하거나 링크하는 경우
- namespce 키워드
- 이름 충돌 해결
- 개발자가 자신만의 namespace을 생성할 수 있도록 함
- namespace 안에 선언된 이름은 다른 namespace와 별도로 구분
- namespace 사용
3. 입출력
1) std::
- ANSI C++ 표준에서 정의한 namespace 중 하나
- <iostream>헤더 파일에 선언된 모든 이름
- using 지시어를 통해 std:: 를 생략
#include<iostream>
using namespace std;
int main()
{
cout<<"Hello"<<endl; //std:: 생략
}
2) cin을 이용한 키 입력
- C++에서의 입력
- 입력 객체인 cin 이용
- "cin>>변수" 형식으로 입력
- 변수의 데이터 형에 맞추어 입력처리
- >>연산자
- 스트림 추출 연산자(stream extraction operator)
- C++ 산술 시프트 연산자(>>)가 <iostream> 헤더 파일에 스트림 추출 연산자로 재정의됨
- 입력 스트림에서 값을 읽어 변수에 저장
- 연속된 >> 연산자를 사용하여 여러 값 입력
- 문자열을 입력할 때는 빈칸 없이 입력해야 한다.
- 연산자는 빈칸이 입력될 때까지를 하나의 입력으로 처리하므로 빈칸을 포함한 문자열을 입력 받으려면 별도의 방법을 사용해야 한다.
- 스트림 추출 연산자(stream extraction operator)
#include <iostream>
using namespace std;
int main()
{
cout << "너비를 입력하세요>>";
int width;
cin >> width; // 키보드로부터 너비를 읽어 width 변수에 저장
cout << "높이를 입력하세요>>";
int height;
cin >> height; // 키보드로부터 높이를 읽어 height 변수에 저장
int area = width*height; // 사각형의 면적 계산
cout << "면적은 " << area << "\n"; // 면적을 출력하고 다음 줄로 넘어감
}
(3) cin으로부터의 키 입력 오류
- cin.fail()
- cin 오류 시 1을 반환하고 0을 반환
- cin.clear()
- cin 객체의 내부 상태 flag를 초기화시켜 cin 관련 기능이 정상 작동하도록 함
- 오류 사실 제거
- cin.ignore(최대확인글자수, '문자')
- 입력 버퍼 지우기
- 최대 수만큼 버퍼에 있는 문자를 지우고, '문자'가 나타나면 '문자'까지 지움
#include <iostream>
using namespace std;
int main()
{
cin>>val;
if(cin.fail()==1) //I/O오류가 발생하면
{
cin.clear(); //모든 오류비트 clear
cin.ignore(256,'\n'); //최대 256개의 문자 무시가능, 개행 문자를 만나면 추출을 멈춤
}
}
(4) C++ 문자열
- 문자열 표현 방식
- C-스트링 방식
- '\0'으로 끝나는 문자 배열
- <cstring>이나 <string.h> 헤더파일 사용
- C++ 표준 방식인 을 사용하는 것이 바람직
- 단순 문자 배열
- 배열 또는 동적으로 메모리 할당
- char형 배열을 선언
- 배열 또는 동적으로 메모리 할당
- C-스트링 방식
#include <iostream>
using namespace std;
int main()
{
cout << "이름을 입력하세요>>";
char name[11]; // 한글은 5개 글자, 영문은 10까지 저장할 수 있다.
cin >> name; // 키보드로부터 문자열을 읽는다.
cout << "이름은 " << name << "입니다"<<endl; // 이름을 출력한다.
}
5) string 클래스
- #include<string>
- 문자열의 크기에 제약이 없음
- string 클래스가 스스로 문자열 크기에 맞게 내부 버퍼 조절
- 문자열 복사, 비교, 수정 등을 위한 다양한 함수와 연산자 제공
- c-string 방식보다 다루기 쉬움
#include <iostream>
#include <string>
using namespace std;
int main()
{
string song("Falling in love with you"); // 문자열 song
string elvis("Elvis Presley"); // 문자열 elvis
string singer; // 문자열 singer
cout << song + "를 부른 가수는"; // + 로 문자열 연결
cout << "(힌트 : 첫글자는 " << elvis[0] << ")?"; // [] 연산자 사용
getline(cin, singer); // 문자열 입력
if(singer == elvis) // 문자열 비교
cout << "맞았습니다.";
else
cout << "틀렸습니다. "+ elvis + "입니다." << endl; // +로 문자열 연결
}
'프로그래밍 언어 > C++' 카테고리의 다른 글
3) 개선된 함수 기능 (0) | 2023.11.01 |
---|---|
2) 포인터와 레퍼런스 (1) | 2023.11.01 |
22.05.27) C++ (0) | 2023.01.15 |
22.05.10) C++ (0) | 2023.01.15 |
22.05.03) C++ (0) | 2023.01.15 |