Search
Duplicate

2장. C++ 프로그래밍의 기본

생성일
2022/03/25 02:14
태그
C++

C++ 프로그래밍의 기본

주석문

/* */ //
C++
복사

<iostream> 헤더 파일

표준 입출력을 위한 클래스와 객체, 변수 등이 선언됨
ios, istream, ostream, iostream 클래스 선어
cout, cin, <<, >> 등 연산자 선언

<< 연산자 활용

문자열 및 기본 타입의 데이터 출력
bool, char, short, int, long, float, double 타입 값 출력
int n = 2; char c = '#'; std::cout << c << 5.5 << '-' << n << "hello" << true;
C++
복사
연산식뿐 아니라 함수 호출도 가능
cout << "n + 5 = " << n + 5; cout << f(); // 함수 f()의 리턴값을 출력한다
C++
복사
다음 줄로 넘어가기
‘\n’이나 endl 조작자 사용
cout << "Hello" << '\n'; cout << "Hello" << endl;
C++
복사
예제)
#include <iostream> using namespace std; double area(int r); // 함수의 원형 선언 double area(int r) { return 3.14 * r * r; } int main() { int n = 3; char c = '#'; cout << c << 5.5 << '-' << n << "hello" << true << endl; cout << "n + 5 = " << n + 5 << '\n'; cout << "면적은 " << area(n); // 함수 area()의 리턴값 출력 }
C++
복사

namespace 개념

namespace 키워드
이름 충돌 해결
개발자가 자신만의 이름 공간을 생성할 수 있도록 함
이름 공간 안에 선언된 이름은 다른 이름 공간과 별도로 구분한다
이름 공간 생성 및 사용
namespace kitae { // kitae 라는 이름 공간 생성 }
C++
복사
예제 2-3)
#include <iostream> using namespace std; int main() { cout << "너비를 입력하세요>> "; int width; cin >> width; cout << "높이를 입력하세요>> "; int height; cin >> height; int area = width * height; cout << "면적은 " << area << "\n"; }
C++
복사

cin 과 >> 연산자를 이용한 키 입력

cin
표준 입력 장치인 키보드를 연결하는 C++ 입력 스트림 객체
입력 버퍼를 내장하고 있다
<Enter> 키가 입력될 때까지 입력된 키를 입력 버퍼에 저장
도중에 <Backspace> 키를 입력하면 입력된 키 삭제
>> 연산자
스트림 추출 연산자 (stream extraction operator)
C++ 산술 시프트 연산자 (>>)가 <iostream> 헤더파일에 스트림 추출 연산자로 재정의 됨
입력 스트림에서 값을 읽어 변수에 저장
<Enter> 키가 입력되면 비로소 cin의 입력 버퍼에서 키 값을 읽어 변수에 전달
연속된 >> 연산자를 사용하여 여러 값 입력 가능
cout << "너비와 높이를 입력하세요>> "; cin >> width >> height; cout << width << '\n' << height << '\n';
C++
복사

실행문 중간에 변수 선언

C++ 의 변수 선언
변수 선언은 아무 곳이나 가능
C++ 변수 선언 방식의 장점
변수를 사용하기 직전 선언함으로써 변수 이름에 대한 타이핑 오류 줄인다
C++ 변수 선언 방식의 단점
선언된 변수를 일괄적으로 보기 힘듦
코드 사이에 있는 변수 찾기 어려움

C++ 문자열

C++ 의 문자열 표현 방식 - 2가지
C-스트링 방식 - ‘\0’ 로 끝나는 문자 배열
string 클래스 이용
<string> 헤더 파일에 선언됨
다양한 멤버 함수를 제공, 문자열 비교, 복사, 수정 등

C-스트링 방식으로 문자열 다루기

C-스트링으로 문자열 다루기
C 언어에서 사용한 함수 사용 가능
strcmp(), strlen(), strcpy() 등
<cstring> 이나 <string.h> 헤더파일 include
<cstring> 헤더파일을 사용하는 것이 바람직함
<cstring> 이 C++ 표준 방식
char name[6]; //5개의 문자를 저장할 수 있는 char 배열 cin >> name; //키보드로부터 문자열을 읽어 name 배열에 저장한다
C++
복사
#include <iostream> using namespace std; int main() { cout << "이름을 입력하세요>> "; char name[11]; cin >> name; cout << "이름은 " << name << "입니다\n"; }
C++
복사
예제) - <cstring>
#include <iostream> #include <cstring> using namespace std; int main() { char password[11]; cout << "프로그램을 종료하려면 암호를 입력하세요 " << endl; while (true) { cout << "암호>> "; cin >> password; if (strcmp(password, "C++") == 0) { cout << "프로그램을 정상 종료합니다." << endl; break; } else { cout << "암호가 틀렸습니다." << endl; } } }
C++
복사

cin.getline() 으로 공백이 낀 문자열 입력

공백이 낀 문자열을 입력 받는 방법
cin.getline(char buf[], int size, char delimitChar)
C++
복사
→ buf에 최대 size - 1 개의 문자 입력. 끝에 ‘\0’ 붙임
→ delimitChar를 만나면 입력 중단. 끝에 ‘\0’ 붙임
#include <iostream> using namespace std; int main() { cout << "주소를 입력하세요>> "; char address[100]; cin.getline(address, 100, '\n'); //키보드로부터 주소 읽기 cout << "주소는 " << address << "입니다\n"; //주소입력 }
C++
복사

C++에서 문자열을 다루는 string 클래스

string 클래스
C++ 에서 강력 추천
C++ 표준 클래스
문자열의 크기에 따른 제약이 없다
string 클래스가 스스로 문자열 크기에 맞게 내부 버퍼를 조절한다
문자열 복사, 비교, 수정 등을 위한 다양한 함수와 연산자를 제공한다
객체 지향적
<string> 헤더 파일에 선언
#include <string>
C-스트링보다 다루기가 쉽다
#include <iostream> #include <string> using namespace std; int main() { string song("Falling in love with you"); string elvis("Evis Presley"); string singer; cout << song + "를 부른 가수는 "; cout << "(힌트 : 첫글자는 " << elvis[0] << ")?"; getline(cin, singer); //빈칸을 포함하는 문자열 입력가능, //getline은 string 타입의 문자열을 입력 받기 위해 제공되는 전역함수이다. if(singer == elvis) cout << "정답"; else cout << "땡 " + elvis + "입니다" << endl; }
C++
복사

<iostream> 헤더 파일은 어디에?

iostream 파일은 확장자 없는 텍스트 파일
컴파일러가 설치된 폴더 아래 include 폴더에 존재

표준 C++ 헤더파일은 확장자가 없다

표준 C++ 에서 헤더파일 확장자 없고, std 이름 공간 적시

헤더 파일에는 무엇이 들어 있는가?

1.
<cstring> 파일에 strcpy() 함수의 코드가 들어 있을까?
a.
strcpy() 함수의 코드가 들어있지 않다
b.
strcpy() 함수의 원형이 선언되어 있다
2.
그러면 strcpy() 함수의 코드는 어디에 있는가?
a.
strcpy() 함수의 코드는 컴파일된 바이너리 코드로, 비주얼 스튜디오가 설치된 lib 폴더에 libcmt.lib 파일에 들어있고
b.
링크 시에 strcpy() 함수의 코드가 exe에 들어간다
3.
그러면 헤더 파일은 왜 사용되는가?
a.
사용자 프로그램에서 strcpy() 함수를 호출하는 구문이 정확한지 확인하기 위해 컴파일러에 의해 필요

cin 과 cout 은 어디에 선언되어 있는가?

cout 이나 cin 은 모두 <iostream> 에 선언된 객체