1. C++ 표준라이브러리의구성 C++ 표준라이브러리의구성 본교재를통해소개할라이브러리 범주설명예관련장 / 절 입출력 표준입출력 파일입출력 ostream ofstream 11.2~11.9 절 12 장 문자열문자열처리 string 절 수치계산수치계산관련 comp

Similar documents
설계란 무엇인가?

C++ Programming

(Microsoft PowerPoint - 11\300\345.ppt [\310\243\310\257 \270\360\265\345])

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

12 장파일입출력 파일입출력의기초파일열기, 사용하기, 닫기파일입출력모드문자단위파일입출력텍스트파일과이진파일 read, write 함수에의한이진파일입출력임의접근입출력스트림상태입출력연산자오버로딩과파일입출력 C++ 프로그래밍입문

쉽게 풀어쓴 C 프로그래밍

1. 표준입출력 C++ : C의모든라이브러리를포함 printf, scanf 함수사용가능예 : int, double, 문자열값을입력받고출력하기 #include <cstdio> int ivar; double dvar; char str[20]; printf("int, dou

Microsoft PowerPoint - [2009] 02.pptx

C++ Programming

Microsoft PowerPoint - C++ 5 .pptx

설계란 무엇인가?

Microsoft PowerPoint - additional01.ppt [호환 모드]

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770>

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Chapter 1-rev

슬라이드 1

설계란 무엇인가?

PowerPoint Template

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

설계란 무엇인가?

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

C프로-3장c03逞풚

설계란 무엇인가?

쉽게 풀어쓴 C 프로그래밍

1. 클래스와배열 int 형배열선언및초기화 int ary[5] = 1, 2, 3, 4, 5 ; for (int i = 0; i < 5; i++) cout << "ary[" << i << "] = " << ary[i] << endl; 5 장클래스의활용 1

금오공대 컴퓨터공학전공 강의자료

PowerPoint Presentation

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - Chap12-OOP.ppt

Microsoft PowerPoint - Chapter 10.ppt

11장 포인터

Slide 1

C 프로그램의 기본

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

C++ Programming

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap06-2pointer.ppt

윤성우의 열혈 TCP/IP 소켓 프로그래밍

Microsoft PowerPoint - chap11.ppt [호환 모드]

2002년 2학기 자료구조

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

PowerPoint 프레젠테이션

PowerPoint Presentation

설계란 무엇인가?

4 장클래스와객체 클래스와객체 public과 private 구조체와클래스객체의생성과생성자객체의소멸과소멸자생성자와소멸자의호출순서디폴트생성자와디폴트소멸자멤버초기화멤버함수의외부정의멤버함수의인라인함수선언 C++ 프로그래밍입문

02장.배열과 클래스

Slide 1

슬라이드 1

Microsoft PowerPoint - Chapter 6.ppt

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

프입2-강의노트-C++기초

Lab 3. 실습문제 (Single linked list)_해답.hwp

Microsoft PowerPoint - chap10-함수의활용.pptx

KNK_C_05_Pointers_Arrays_structures_summary_v02

PowerPoint Template

<4D F736F F F696E74202D2034C5D8BDBAC6AEC6C4C0CFC0D4C3E2B7C2312E505054>

03 상수, 변수, 자료형

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - chap03-변수와데이터형.pptx

PowerPoint 프레젠테이션

Slide 1

윤성우의 열혈 TCP/IP 소켓 프로그래밊

Microsoft PowerPoint - 제11장 포인터

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문

1. 상속의기본개념 다음과같은문제를위한클래스설계 자동차 속성 : 색상, 배기량, 현재속도 메서드 : 가속하라, 멈춰라, 시동을켜라 트럭 속성 : 색상, 배기량, 현재속도, 최대중량 메서드 : 가속하라, 멈춰라, 시동을켜라 택시 속성 : 색상, 배기량, 현재속도, 요금,

11장 포인터

Microsoft PowerPoint - Chapter_04.pptx

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

PowerPoint 프레젠테이션

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap12.ppt [호환 모드]

chap7.key

The C++ Programming Language 4 장타입과선언 4.11 연습문제 Hello,world! 프로그램을실행시킨다. 프로그램이컴파일되지않으면 B3.1 을참고하자. #include<iostream> //#include 문, 헤더파일, 전처리지시

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

Microsoft PowerPoint APUE(Intro).ppt

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - chap-03.pptx

080629_CFP °ø°³¿ë.hwp

Slide 1

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint Presentation

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

OCW_C언어 기초

歯9장.PDF

chap 5: Trees

Microsoft PowerPoint - Lesson2.pptx

PowerPoint 프레젠테이션

C++ Programming

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

adfasdfasfdasfasfadf

Microsoft PowerPoint - 제11장 포인터(강의)

13 주차문자열의표현과입출력

Microsoft PowerPoint - additional-11_13l.ppt [호환 모드]

Transcription:

11 장표준라이브러리와표준입출력 C++ 표준라이브러리의구성 C++ 입출력클래스 setf와 unsetf 멤버함수를이용한입출력형식지정 setf 이외의멤버함수를이용한입출력형식지정입출력조작자를이용한입출력형식지정사용자정의입출력조작자의생성문자단위입출력줄단위입출력입출력스트림상태 string 클래스 complex 클래스 C++ 프로그래밍입문

1. C++ 표준라이브러리의구성 C++ 표준라이브러리의구성 본교재를통해소개할라이브러리 범주설명예관련장 / 절 입출력 표준입출력 파일입출력 ostream ofstream 11.2~11.9 절 12 장 문자열문자열처리 string 11.10 절 수치계산수치계산관련 complex 11.11 절 컨테이너클래스다양한자료구조 vector 이터레이터 컨테이너클래스 요소포인터 iterator 13 장 알고리즘범용함수 sort 메모리메모리동적할당 auto_ptr 15.1 절 타입타입정보 typeid 15.4 절 11 장표준라이브러리와표준입출력 1

2. C++ 입출력클래스 C 스타일의입출력 : printf, scanf, fprintf, fscanf 등 <cstdio> 헤더파일에포함되어있음 C++ 입출력관련클래스 템플릿클래스 8 비트문자기반클래스와이드문자기반클래스 basic_streambuf streambuf wstreambuf ios_base ( 비템플릿 ) ios_base ios_base basic_ios ios wios basic_istream istream wistream basic_ostream ostream wostream basic_filebuf filebuf wfilebuf basic_ifstream ifstream wifstream basic_ofstream ofstream wofstream basic_fstream fstream wfstream 사용방법동일향후로는 8 비트를대상으로설명 11 장표준라이브러리와표준입출력 2

2. C++ 입출력클래스 입출력관련클래스들의구성도 표준입출력클래스들 istream, ostream, iostream 파일입출력클래스들 ifstream, ofstream, fstream 11 장표준라이브러리와표준입출력 3

2. C++ 입출력클래스 입출력메커니즘 표준입출력 ( 키보드, 모니터 ) 과파일입출력 ( 파일 ) 의사용방법유사 표준입출력객체 클래스객체명기능연결장치대응 C 스트림 istream cin 입력키보드 stdin ostream cout 출력모니터 stdout ostream cerr 오류출력모니터 stderr 표준입출력객체는시스템에의해생성됨 입출력 ( 표준, 파일 ) 객체의복사생성및대입불가 ß 복사생성자와대입연산자는 private 멤버로포함되어있음 (ios_base) ostream, istream 구현원리는 7.9 절참고 : 본장에서는사용방법설명 11 장표준라이브러리와표준입출력 4

3. setf 와 unsetf 멤버함수를이용한입출력형식지정 cout : setf와 unsetf를이용한출력형식지정원리 _Fmtfl 변수 ( 출력형식저장 ) 값변경 : 각서식의비트값을 1로변경또는 0으로변경 각서식의의미를열거형값으로선언 ios_base::hex 16 진수출력예 cout.unsetf(ios_base::dec); // 10진수해제 cout.setf(ios_base::hex); // 16진수설정 cout << "16진수 : " << 16 << endl; cout.setf(ios_base::dec); // 10진수설정 cout << "10진수 : " << 16 << endl; 11 장표준라이브러리와표준입출력 5

3. setf 와 unsetf 멤버함수를이용한입출력형식지정 fmtflags setf(fmtflags); 멤버함수의사용 (fmtflags 는 int 형과동일 ) bool btf = true; int i = 16; double d = 12.0; 플래그상수설명용도 boolalpha bool 값을 true 와 false 로표현입출력 showbase 정수값출력시진법표시접두어사용출력 showpoint 실수값출력시소수점표기출력 uppercase 16 진수출력시 X 를대문자로표기실수과학적표기시 E 를대문자로표기 cout << btf << endl; cout << i << endl; cout << d << endl << endl; // 플래그동시설정 cout.setf(ios_base::boolalpha ios_base::showbase ios_base::showpoint ios_base::uppercase ios_base::showpos); 출력 showpos 양수앞에 + 부호표기출력 skipws 입력시공백문자무시 ( 디폴트 On) 입력 cout.unsetf(ios_base::dec); cout.setf(ios_base::hex); // 16 진수설정 cout << btf << endl; cout << i << endl; cout << d << endl; 11 장표준라이브러리와표준입출력 6

3. setf 와 unsetf 멤버함수를이용한입출력형식지정 fmtflags setf(fmtflags, fmtflags); 멤버함수의사용 관련그룹별지정 bool btf = true; int i = 16; double d = 12.0; 첫번째매개변수두번째매개변수설명용도 dec, oct, hex basefield 10 진수, 8 진수, 16 진수표기입출력 fixed, scientific left, right, internal floatfield adjustfield 실수의소수점표기와과학적표기 왼쪽정렬, 오른쪽정렬, 부호와진법접두어는왼쪽정렬이고값은오른쪽정렬 출력 출력 cout << btf << endl; cout << i << endl; cout << d << endl << endl; 16 진수설정 cout.setf(ios_base::boolalpha ios_base::showbase ios_base::showpoint ios_base::uppercase ios_base::showpos); cout.setf(ios_base::hex, ios_base::basefield); cout.setf(ios_base::scientific, ios_base::floatfield); cout << btf << endl; cout << i << endl; cout << d << endl; 과학적표기법 11 장표준라이브러리와표준입출력 7

3. setf 와 unsetf 멤버함수를이용한입출력형식지정 setf 함수의반환값 이전플래그변수 (_Fmtfl) 의값 à 각플래그의상태를알아볼수있음 플래그지정없이플래그변수값을알아오는함수 fmtflags flags(); ios_base::fmtflags flag = cout.flags(); if (flag & ios_base::hex) // 16진수설정여부 cout << "hex on" << endl; else cout << "hex off" << endl; cout.setf(ios_base::hex, ios_base::basefield); flag = cout.flags(); if (flag & ios_base::hex) cout << "hex on" << endl; else cout << "hex off" << endl; 11 장표준라이브러리와표준입출력 8

4. setf 이외의멤버함수를이용한출력형식지정 출력형식지정을위한 ostream 멤버함수 int width(int i) 함수설명디폴트값 최소필드너비조정 조정후첫번째출력후에는디폴트값으로자동환원 출력내용과동일 char fill(char c) 필드내의공백자리에채워질문자설정공백 int precision(int p) 실수출력시출력되는총자릿수, 출력형식이 fixed 또는 scientific 이라면소수점이하자릿수 6 cout.width(10); cout << "hello" << endl; cout.fill('%'); cout.width(10); cout << "hello" << endl << endl; cout.setf(ios::left, ios::adjustfield); cout.width(10); cout << "hello" << endl << endl; 11 장표준라이브러리와표준입출력 cout.width(10); cout.precision(4); cout << 123.1234567 << endl; cout.width(10); cout.precision(6); cout << 123.1234567 << endl; 9

5. 입출력조작자를이용한입출력형식지정 입출력형식지정방법 ostream, istream 클래스의멤버함수사용 : setf, unsetf, width 등 입출력조작자 (io manipulator) 사용 : 동일한효과를낼수있음입출력조작자의사용방법및수행원리 <<, >> 입출력연산자와함께사용하게됨 cout << oct << 100 << hex << 100 << endl; 수행원리 : 내부적으로는결국 ostream, istream 의멤버함수가수행됨 cout << hex의경우 변환수행 : cout.operator<<(hex); 함수호출 : hex(cout); // hex라는함수가수행됨 수행내용 : cout.setf(ios_base::hex); // hex 함수의수행내용 setf, unsetf에해당하는입출력조작자 setiosflags, resetiosflags cout << resetiosflags(ios_base::dec) << setiosflags(ios_base::hex) << 16 << endl; 11 장표준라이브러리와표준입출력 10

5. 입출력조작자를이용한입출력형식지정 입출력조작자의종류 입출력조작자대응서식플래그설명용도 boolalpha noboolalphs showbase noshowbase showpoint noshowpoint uppercase nouppercase showpos noshowpos skipws noskipws dec hex oct fixed scientific left internal right setf(ios_base::boolalpha) unsetf(ios_base:boolalpha) setf(ios_base::showbase) unsetf(ios_base:showbase) setf(ios_base::showpoint) unsetf(ios_base:showpoint) setf(ios_base::uppercase) unsetf(ios_base: uppercase) setf(ios_base::showpos) unsetf(ios_base:showpos) setf(ios_base::skipws) unsetf(ios_base:skipws) setf(ios_base::dec, ios_base::basefield) setf(ios_base::fixed, ios_base::floatfield) setf(ios_base::left, ios_base::adjustfield) bool 값의 true, false 표현 진법표시접두어사용 소수점표기 16 진수 X, 과학적표기 E 대문자사용 양수앞에 + 부호표기 입력시공백문자무시 ( 디폴트값 : On) 진수표기 실수표기 정렬방법 입출력 11 장표준라이브러리와표준입출력 11 출력 출력 출력 출력 입력 입출력 출력 출력

5. 입출력조작자를이용한입출력형식지정 입출력조작자의종류 ( 계속 ) 입출력조작자대응서식플래그설명용도 setw(int) width(int) 필드너비조정, 이후한번의출력후디폴트로환원됨 setfill(char) fill(char) 공백자리채움문자지정출력 setprecision(int) precision(int) 실수출력자릿수설정출력 endl newline 문자출력, 스트림비움출력 flush 스트림을비움출력 setiosflags resetiosflags setf unsetf 출력 #include <iostream> #include <iomanip> using namespace std; // setfill, setw cout << hex << 100 << endl; cout << oct << 10 << endl; // 16진수출력 // 8진수출력 cout << setfill('x') << 100 << setw(10) << endl; // 채움문자, 필드설정 cout << 100 << " hi " << endl; 11 장표준라이브러리와표준입출력 12

6. 사용자정의입출력조작자의생성 입출력조작자 ( 결국함수 ) 의형태 ostream &FuncName(ostream &); // 출력조작자 istream &FuncName(istream &); // 입력조작자 사용자정의조작자의예 ostream &MySetup(ostream &os) // 사용자정의출력조작자 os << "<< 나의입출력조작자 >>" << endl; os.width(10); os.precision(4); os.fill('*'); return os; cout << 123.123456 << endl; cout << MySetup << 123.123456 << endl; 11 장표준라이브러리와표준입출력 13

7. 문자단위입출력 istream 의문자입력함수 int get(void); istream &get(char &); // 연속적인 get 함수적용가능 ostream 의문자출력함수 ostream &put(char); 예 : 키보드입력을그대로화면에출력 char ch; cin.get(ch); while (!cin.eof()) cout.put(ch); ch = cin.get(); // 문자하나입력 // 문자하나출력 // 문자하나입력 파일끝표시 : Ctrl+z 11 장표준라이브러리와표준입출력 14

8. 줄단위입력 istream : 줄단위문자열입력을위한멤버함수 istream &get(char *, int, char = \n ); 최대개수 (int) 만큼입력을받아들이되종료문자 ( \n ) 가나타나면입력종료 입력후종료문자를입력스트림에남겨둠 istream &getline(char *, int, char = \n ); 입력후종료문자를입력스트림으로부터제거 char str[80]; cout << " 문자열입력 : "; cin.getline(str, 80, '*'); cout << " 다음문자는 : " << (char) cin.get() << endl; char str[80]; cin.get(str, 80); cin.getline(str, 80); while ((cin.get())!= '\n'); // 그줄의나머지를읽어들임 cout << " 문자열입력 : "; cin.get(str, 80, '*'); // * 문자전까지입력 cout << " 다음문자는 : " << (char) cin.get() << endl; 11 장표준라이브러리와표준입출력 15

9. 입출력스트림상태 입출력수행에따른현재상태저장 ios_base 클래스내에상태를저장하는변수가있음 iostate _State; ü 실제유의미한비트는하위 3 비트 입출력스트림상태의종류 // iostate 는 int 와동일 상태열거값설명접근함수 goodbit 0 에러가발생하지않았음 eofbit, failbit, badbit 모두 0 인경우 현재상태가 fail 인지알고싶다면 : if (cin.fail()) good() eofbit 1 입력스트림에서파일의끝에도달 eof() failbit 2 badbit 4 치명적이지않은입출력에러발생 지정한타입의값을읽을수없음 접근할수없는파일읽기 쓰기방지된디스켓에쓰기 치명적인입출력에러발생 복구불가능한에러 스트림상태를 goodbit(0) 으로복원하는방법 : cin.clear(); 현재스트림상태값 (_State) 을읽어오는함수 : iostate rdstate() const; 11 장표준라이브러리와표준입출력 16 fail() bad()

9. 입출력스트림상태 예 : 원하는타입의데이터를읽지못한경우 failbit 의값확인 int a; cout << " 정수입력 : "; cin >> a; if (cin.fail()) cout << "fail" << endl; else cout << "not fail" << endl; cin.clear(); if (cin.fail()) cout << "fail" << endl; else cout << "not fail" << endl; 다음장에서배울파일입출력을위해사용가능 à 지금까지배운내용 ( 서식지정, 입출력 ) 모두파일입출력에사용가능 클래스객체에대한출력연산자오버로딩및입력연산자오버로딩 à 7.9 절참고 11 장표준라이브러리와표준입출력 17

10. string 클래스 ( 연습문제 7.14) CString 클래스만들기 내부적으로 char 포인터와문자열길이보관 생성자, 소멸, 복사생성자, 대입연산자, +, <<, +=, ==, >> 연산자오버로딩필요표준 C++ 에서제공하는문자열처리클래스 à string <string> 헤더파일에포함되어있음 주요기능 ( 교재 [ 표 11.9] 참고 ) = : 대입연산 +, += : 문자열결합 ==,!=, <, >, <=, >= : 동등및대소비교 >>, << : 입출력연산 [], append, insert, erase, replace, find, rfind, compare, swap 11 장표준라이브러리와표준입출력 18

10. string 클래스 insert 와 swap 함수의사용예 #include <iostream> #include <string> using namespace std; void Print(string &s1, string &s2, string title) cout << title << endl; cout << "str1 : " << s1 << endl; cout << "str2 : " << s2 << endl; string str1 = "Hello! Programming"; string str2 = "C++ "; Print(str1, str2, "<< 적용전 >>"); str1.insert(7, str2); // 7과 8번째원소사이에삽입 Print(str1, str2, "<< insert >>"); str1.swap(str2); // 문자열교환 Print(str1, str2, "<< swap >>"); 11 장표준라이브러리와표준입출력 19

11. complex 클래스 complex 클래스 : complex 헤더파일에포함되어있음 복소수를표현하는클래스 : a + bi (a: 실수부, b: 허수부 ) 템플릿클래스로구현 주요기능 #include <iostream> #include <complex> using namespace std; complex<double> comp1(1.0, 2.0); complex<double> comp2(3.0, 4.0); cout << "+ : " << comp1 + comp2 << endl; cout << "- : " << comp1 - comp2 << endl; cout << "* : " << comp1 * comp2 << endl; cout << "/ : " << comp1 / comp2 << endl; 기능연산자의미 (X = a + bi, Y = c + di) 덧셈 + X + Y = (a + c) + (b + d)i 뺄셈 - X - Y = (a - c) +(b - d)i 곱셈 * X * Y = (ac - bd) + (ad + bc)i 나눗셈 / 대입 = 상등비교 ==,!= 입출력 >>, << X / Y = (ac + bd)/(c 2 + d 2 ) + (bc - ad)/(c 2 + d 2 )i 11 장표준라이브러리와표준입출력 20