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

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

설계란 무엇인가?

C++ Programming

Microsoft PowerPoint - [2009] 02.pptx

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

Microsoft PowerPoint - 05장(함수) [호환 모드]

C++ Programming

쉽게 풀어쓴 C 프로그래밍

설계란 무엇인가?

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - C++ 5 .pptx

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

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

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

C프로-3장c03逞풚

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

쉽게 풀어쓴 C 프로그래밍

슬라이드 1

Microsoft PowerPoint - Chapter 10.ppt

Microsoft PowerPoint - Chapter 6.ppt

Slide 1

PowerPoint Template

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

Microsoft PowerPoint - Chapter 1-rev

설계란 무엇인가?

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

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

PowerPoint Template

설계란 무엇인가?

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

080629_CFP °ø°³¿ë.hwp

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

PowerPoint 프레젠테이션

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

PowerPoint Template

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

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

C++ Programming

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

Programming hwp

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt

C++ Programming

PowerPoint 프레젠테이션

2002년 2학기 자료구조

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

PowerPoint Presentation

Microsoft PowerPoint - Chap12-OOP.ppt

PowerPoint 프레젠테이션

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

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

C++ Programming

PowerPoint Presentation

; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

설계란 무엇인가?

Slide 1

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

untitled

제 1 장 기본 개념

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

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

PowerPoint Presentation

gnu-lee-oop-kor-lec06-3-chap7

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

Microsoft PowerPoint - chap11-포인터의활용.pptx

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

<432B2BC7C1B7CEB1D7B7A1B9D628BABBB9AE5FC3D6C1BE295B315D2E687770>

<4D F736F F F696E74202D B3E22032C7D0B1E220C0A9B5B5BFECB0D4C0D3C7C1B7CEB1D7B7A1B9D620C1A638B0AD202D20C7C1B7B9C0D320BCD3B5B5C0C720C1B6C0FD>

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

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

슬라이드 1

PowerPoint 프레젠테이션

11장 포인터

슬라이드 1

Microsoft PowerPoint - 9ÀÏ°_ÂüÁ¶ÀÚ.ppt

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

Blog

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

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

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

Slide 1

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

BMP 파일 처리

C++-¿Ïº®Çؼ³10Àå

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

Microsoft PowerPoint - chap12-고급기능.pptx

Blackjack Game [Project #1] Multiplayer Blackjack Game 블랙잭은 21을넘지않는한도내에서딜러와겨루어숫자가높으면이기는게임 1 딜러 (House) 가자신을포함한참가자전원에게카드두장을나누어주는데, 딜러의카드한장은참가자들에게보이지않는다

02장.배열과 클래스

중간고사

PowerPoint Presentation

<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770>

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

Microsoft PowerPoint - ch07 - 포인터 pm0415

1. 기본형의형변환복습 C/C++ 형변환의종류 자동형변환 ( 묵시적형변환 ) 강제형변환 ( 명시적형변환 ) 기본형의자동형변환의예 1. 배열 to 포인터변환 배열명은해당배열의첫번째원소의 주소로변환됨 int ary[10]; int *pary = ary; 2. 함수 to 포

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

adfasdfasfdasfasfadf

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

Transcription:

입출력 C++ 의효율적인입출력방법을배워보자.

이장에서다룰내용 1 cin 과 cout 을이용한입출력 2 입출력연산자중복 3 조작자생성 4 파일입출력

01_cin 과 cout 을이용한입출력 포맷입출력 C++ 의표준입출력은 cin, cout 을사용한다. C 의 printf 는함수이므로매번여러인자를입력해줘야하지만, cin/cout 에서는형식을한번만정의하면계속사용할수있다. setf : 형식을정의 fmtflags setf ( fmtflags fmtfl ); 참고 : void unsetf ( fmtflags mask );

[ 기본예제 11-1] 포맷입출력 01 #include<iostream> 02 using namespace std; 03 int main(int argc, char* argv[]) 04 { 05 cout << 123.23 << "hello" << 100 << '\n'; 06 07 cout.setf(ios::hex); // 상황에따라, cout.setf(ios::dec); 해주어야함 // cout.setf(ios_base::hex, ios_base::basefield); 또는 cout << hex 08 cout << 123.23 << "hello" << 100 << '\n'; 09 10 cout.setf(ios::scientific); // cout.setf(ios_base::scientific, ios_base::floatfield); 11 cout << 123.23 << "hello" << 100 << '\n'; 12 cout.setf(ios::uppercase); // 13 cout << 123.23 << "hello" << 100 << '\n'; 14 15 return 0; 16 } 16 진수로표시한다. 실수를과학용 과학용표기로 표기로출력한다. 진수나과학용표기에대문자로출력한다. 표기에대한 대한문자들을

01_cin 과 cout 을이용한입출력 cout 의멤버함수 cout 은함수가아닌객체이므로, 멤버함수를가지고있다. cout 의멤버함수를익혀서출력형식에변화를줘보자. 멤버함수의종류

[ 기본예제 11-2] cout 멤버함수 01 #include<iostream> 02 using namespace std; 03 int main(int argc, char* argv[]) 04 { 05 cout.width(10); 06 cout << "...test..." << "\n"; 07 08 cout.fill('-'); 09 cout.width(20); 10 cout << "...test..." << "\n"; 11 12 cout.setf(ios::left); // cout.setf(ios_base::left, ios_base::adjustfield); 13 cout.width(20); 14 cout << "...test..." << "\n"; 15 16 cout.precision(10); 17 cout.width(20); 18 cout << 3.14159265 << "\n"; 19 20 cout.precision(5); 21 cout.width(20); 22 cout << 123.234567 << "\n"; 23 return 0; 24 } 빈자리를 - 로채우고, 너비를 20 으로설정한다. 좌측으로정렬시킨다. 10 자리가너비를 20 자리가출력되도록 출력되도록설정하고, 20 으로 으로설정한다. 5 자리가출력되도록너비를 20 으로 출력되도록설정하고, 으로설정한다.

01_cin 과 cout 을이용한입출력 cout 의조작자 지금까지배운 setf 나다른멤버함수들이외에조작자를이용해서보다간단하게출력형태를바꿀수있다. 조작자의종류 참고. 조작자를사용하려면 iomanip 를 include 해야한다.

[ 기본예제 11-3] 조작자예제 01 #include<iostream> 02 #include<iomanip> 03 using namespace std; 04 int main(int argc, char* argv[]) 05 { 06 cout << hex << 100 << endl; 07 cout << oct << 100 << endl; 08 cout << setfill('-') << setw(10); 09 cout << "hello" << endl; 10 return 0; 11 } 16 진수로표시한다. 8 진수로표시한다. 빈자리를 - 로채우고, 너비를 10 으로설정한다.

02_ 입출력연산자중복 출력연산자중복 입출력연산자도중복이가능하다. 출력연산자인 << 를중복하기위해서는다음형식을사용한다. ostream 은이입출력두번째매개변수는 ostream 형인 stream 입출력연산자는멤버중복하도록한다. 입출력연산자가 매개변수는출력될 연산자가출력 출력될객체를 stream 에대한 멤버함수가 출력연산자라는 객체를입력 대한참조를 연산자라는것을 입력받으며 참조를반환한다. 함수가될수없으며 것을의미하고, 받으며, 작업을 없으며, friend 작업을모두, friend 함수를 모두마친 마친뒤에는 함수를이용해서

[ 기본예제 11-4] 출력연산자중복 01 #include<iostream> 02 using namespace std; 03 class Unit { 04 int x,y; 05 public: 06 Unit() { x=0; y=0; } 07 Unit(int i, int j) { x=i; y=j; } 08 friend ostream &operator<<(ostream &stream, Unit unit); 09 }; 10 11 ostream &operator<<(ostream &stream, Unit unit) 12 { 13 stream << unit.x << ", " << unit.y << endl; 14 return stream; 15 } 16 17 int main(int argc, char* argv[]) 18 { 19 Unit a(10,10), b(1,23); 20 cout << a << b; 21 return 0; 22 } 출력연산자를선언한다. 연산자를 friend friend 함수로 출력연산자를구현한다.

02_ 입출력연산자중복 입력연산자중복 출력연산자를중복한것과유사하게, 입력연산자도중복할수있다. istream 첫번째두번째 istream 을이용하여 이용하여참조를 번째입력인자가 입력인자가 istream 번째입력인자는 입력인자는입력을 참조를반환하며, istream 에대한 대한참조이다. 입력을받아들이는 받아들이는객체에 객체에대한 대한참조이다.

[ 기본예제 11-5] 입력연산자중복 01 #include<iostream> 02 using namespace std; 03 class Unit { 04 int x,y; 05 public: 06 Unit() { x=0; y=0; } 07 Unit(int i, int j) { x=i; y=j; } 08 friend ostream &operator<<(ostream &stream, Unit unit); 09 friend istream &operator>>(istream &stream, Unit &unit); 10 }; 18 istream &operator>>(istream &stream, Unit &unit) 19 { 20 cout << "Enter x,y : "; 21 stream >> unit.x; 22 stream >> unit.y; 23 return stream; 24 } 25 26 int main(int argc, char* argv[]) 27 { 28 Unit a(10,10), b(1,23), c; 29 cout << a << b; 30 31 cin >> c; 32 cout << c; 33 return 0; 34 } 입력연산자를선언한다. 연산자를 friend friend 함수로 입력연산자를구현한다.

03_ 조작자생성 C++ 에서는입출력연산자를중복하는것뿐만아니라, 자신만을위한조작자역시생성할수있다. 출력조작자는다음과같은일반적인형태를갖는다. Manipulator 는생성할조작자의이름을의미한다. 입력조작자는다음과같은일반적인형태를갖는다.

[ 기본예제 11-6] 조작자생성 01 #include<iostream> using namespace std; 02 ostream &mysetup(ostream &stream) 03 { 04 stream.width(10); 05 stream.precision(4); 06 stream.fill('*'); 07 return stream; 08 } 09 int main(void) 10 { 11 cout << mysetup << 123.123456; 12 return 0; 13 } 조작자를생성한다. 정의한조작자를사용한다.

04_ 파일입출력 파일에대한입출력방법도화면입출력방법과크게다르지않다. 파일입출력을위하여 fstream 를포함하고, 파일입출력객체를만들고, 운하는입출력연산을수행시킨다. 파일을열때주로사용하는속성들은다음과같다.

[ 기본예제 11-8] 파일입출력 01 #include <fstream> 02 using namespace std; 03 int main(int argc, char* argv[]) 04 { 05 ofstream file1("log1.txt"); 06 file1 << "this is a log file 1."; 07 file1.close(); 08 09 ofstream file2; 10 file2.open("log2.txt"); 11 file2 << "this is a log file 2."; 12 file2.close(); 13 14 return 0; 15 } 파일을연다. 파일에내용을출력한다. 파일을닫는다. 다른파일을연다. 파일에내용을출력한다. 파일을닫는다.

[ 기본예제 11-9] 파일복사 01 #include <fstream> 02 using namespace std; 03 int main(int argc, char* argv[]) 04 { 05 ifstream file1; 06 ofstream file2; 07 char data; 08 09 file1.open("before.txt", ios::binary ); 10 file2.open("after.txt", ios::binary ); 11 // ios::binary 대신 ios_base::binary 12 while( file1.get( data ) ) { 13 file2.put( data ); 14 } 15 16 file1.close(); 17 file2.close(); 18 19 return 0; 20 } 2 진모드로 모드로입력 입력파일을 파일을연다. 2 진모드로출력파일을연다. 입력파일의내용을출력파일에쓴다. 파일객체들을닫는다.

예제모음 _20 의요구사항및실행결과 요구사항 1 다음과같은사각형클래스가있다. class Rectangle { int height, width; // height: 높이, width: 밑변의길이 public: Rectangle() { height=0; width=0; } Rectangle(int x, int y) { height=y; width=x; } }; 2 이사각형클래스의정보를곧바로 cout 으로출력할수있도록출력연산자를중복하라. 3 사각형에대한정보는높이, 밑변의길이, 면적을출력하도록한다. 실행결과

예제모음 _20 소스 01 #include<iostream> 02 using namespace std; 03 class Rectangle { 04 05 int height, width; 06 public: 07 Rectangle() { height=0; width=0; } 08 Rectangle(int x, int y) { height=y; width=x; } 09 friend ostream &operator<<(ostream &stream, Rectangle rect); 10 }; 11 12 ostream &operator<<(ostream &stream, Rectangle rect) 13 { 14 stream << "width : " << rect.width << 15 ", height : " << rect.height << 16 ", area : " << rect.height*rect.width << endl; 17 return stream; 18 } 19 20 int main(int argc, char* argv[]) 21 { 22 Rectangle a(4,5); 23 cout << a; 24 return 0; 25 } Height 는높이, Width 는밑변의길이를의미한다. 출력연산자를중복한다. 출력연산자를사용한다.

예제모음 _21 의요구사항및실행결과 요구사항 1 다음과같은사각형클래스가있다. class Rectangle { int height, width; // height: 높이, width: 밑변의길이 public: Rectangle() { height=0; width=0; } Rectangle(int x, int y) { height=y; width=x; } }; 2 이사각형클래스의정보를쉽게 cin 으로입력할수있도록입력연산자를중복하라. 3 사각형에대한정보는높이, 밑변의길이를입력받도록하며, 입력받는즉시면적을구하여화면에출력하도록한다. 실행결과

예제모음 _21 소스 01 #include<iostream> 02 using namespace std; 03 class Rectangle { 04 05 int height, width; 06 public: 07 Rectangle() { height=0; width=0; } 08 Rectangle(int x, int y) { height=y; width=x; } 09 void show() { cout << "area : " << height * width << endl; } 10 friend istream &operator>>(istream &stream, Rectangle &rect); 11 }; 12 13 istream &operator>>(istream &stream, Rectangle &rect) 14 { 15 cout << "enter width & height : "; 16 stream >> rect.width; 17 stream >> rect.height; 18 return stream; 19 } 20 21 int main(int argc, char* argv[]) 22 { 23 Rectangle a; 24 cin >> a; 25 a.show(); 26 27 return 0; 28 } Height 는높이, Width 는밑변의길이를의미한다. 입력연산자를중복한다. 입력연산자를사용한다.

예제모음 _22 의요구사항및실행결과 요구사항 1 다음과같은사각형클래스가있다. class Rectangle { int height, width; // height: 높이, width: 밑변의길이 char name[255]; // name: 사각형이름 public: Rectangle() { height=0; width=0; }}; 2 이사각형클래스의정보를쉽게 cin 으로입력할수있도록입력연산자를중복하라. 3 사각형에대하여사각형의이름, 높이, 밑변의길이를입력받으면, 사각형에대한정보를파일에출력하며, 파일명은입력받은사각형의이름을이용하도록한다. 실행결과

예제모음 _22 소스 #1 01 #include<iostream> 02 #include<fstream> 03 using namespace std; 04 class Rectangle { 05 int height, width; // height : 높이, width : 밑변의길이 06 char name[255]; // name : 사각형의이름 07 public: 08 Rectangle() { height=0; width=0; } 09 void write() { 10 ofstream file; 11 file.open( name ); 12 13 file << "name : " << name << endl; 14 file << "width : " << width << endl; 15 file << "height : " << height << endl; 16 17 file.close(); 18 } 19 friend istream &operator>>(istream &stream, Rectangle &rect); 20 }; 21 22 istream &operator>>(istream &stream, Rectangle &rect) 23 { 24 cout << "enter namd, width & height : "; 25 stream >> rect.name; 26 stream >> rect.width; 27 stream >> rect.height; 28 return stream; 29 } 사각형의정보를파일에출력한다. 입력연산자를중복한다.

예제모음 _22 소스 #2 30 31 int main(int argc, char* argv[]) 32 { 33 Rectangle a; 34 cin >> a; 35 a.write(); 36 37 return 0; 38 } 입력연산자를사용한다. 파일에정보를출력한다.

요약 #1 C++ 입출력 cout 의멤버함수 cout 의조작자 C++ 에서는입출력을위해 cin, cout 을제공하며, 멤버함수와조작자를이용하여좀더편하게제어할수있다.

요약 #2 출력연산자의중복 입력연산자의중복 파일입출력 C++ 에서의파일입출력은 cin, cout 과거의유사하다. 다만, iostream 대신에 fstream 를포함하고, 파일입력의경우에는 ifstream, 출력의경우에는 ofstream 객체를생성해서사용하면된다. 파일입출력과관련된주요속성들은다음과같다.

www.themegallery.com IT CookBook for Beginner, C++ 기초 기초 11 11 장끝