C++ Programming C++ 스타일의입출력 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com
목 차 C 스타일의입출력 C++ 스타일의입출력 2
C 스타일의입출력 #include <cstdio> C 스타일의입출력 int main() { int a, b, c; printf(" 세개의정수입력 : "); scanf("%d %d %d", &a, &b, &c); int tot = a + b + c; double ave = tot / 3.0; printf(" 총점 : %8d n", tot); printf(" 평균 : %8.2f n", " ave); } return 0; 3
C++ 스타일의입출력 C 스타일의입출력 C++ 스타일의입출력 입출력형식지정 파일입출력 4
C++ 스타일의입출력 #include <iostream> using std::cin; using std::cout; using std::endl; int main() { int a, b, c; C++ 스타일의입출력 cout << " 세개의정수입력 : "; cin >> a >> b >> c; int tot = a + b + c; double ave = tot / 3.0; cout << " 총점 : " << tot << endl; cout << " 평균 : " << ave << endl; } return 0; 5
C++ 스타일의입출력 (cont d) 입출력클래스의상속계층도 ios_base 입출력형식 (Format) 과관련된기능을제공하는클래스 basic_istream과 basic_ostream에서사용하는기본기능을제공하는클래스 basic_ios basic_streambuf 스트림내부적으로사용하는메모리공간을관리하는클래스 basic_istream basic_ostream cin 객체의타입 cout 객체의타입 6
C++ 스타일의입출력 (cont d) cin 과 cout 객체 스트림의끝을콘솔창과연결해놓은것 #include <iostream> extern istream &cin; extern ostream &cout; typedef basic_ostream<char> ostream; typedef basic_istream<char> istream; 7
입출력형식지정 setf 함수 입출력형식지정 : ios_basic 클래스의 setf 함수를사용 setf 함수는다음과같이다중정의 (Overloading) 된두가지버전 fmtflags setf( fmtflags f); fmtflags setf(fmtflags f, fmtflags mask); 8
setf 함수 (cont d) 인자가하나인 setf 함수에사용할수있는값 값 showbase showpoint showpos uppercase boolalpha 의미진법을나타내는기호를함께출력실수를출력할때항상소수점을출력양수의경우에도 + 기호를붙여서출력실수를과학적표기법으로출력할때문자 E 나정수를출력할때사용하는영문자들을대문자로출력 bool 타입의값을 1, 0이아닌 true, false 형태로출력하거나입력 9
프로그램예제 : 인자가하나인 setf 함수 #include <iostream> using std::cout; using std::endl; using std::ios_base; int main() { cout.setf(ios_base::showpos); cout << 10 << endl; cout << -10 << endl; cout.setf(ios_base::boolalpha); cout << true << endl; cout << false << endl; } return 0; 10
프로그램예제 : unsetf 함수 #include <iostream> using std::cout; using std::endl; using std::ios_base; int main() { cout.setf(ios_base::boolalpha); cout << true << endl; cout << false << endl; cout.unsetf(ios_base::boolalpha); cout << true << endl; cout << false << endl; } return 0; 11
setf 함수 (cont d) 인자가둘인 setf 함수의첫번째인자로사용할수있는값 값 dec hex oct internal left right fixed scientific 의미정수를 10진수로출력하거나입력정수를 16진수로출력하거나입력정수를 8진수로출력하거나입력값을오른쪽으로정렬해서출력하지만부호 (+, -) 혹은진법을나타내는기호 (0x, 0) 는왼쪽정렬출력값을왼쪽으로정렬해서출력값을오른쪽으로정렬해서출력실수를항상 10.12345와같은방식으로출력실수를항상 1.23E+006 과같은방식으로출력 12
setf 함수 (cont d) 인자가둘인 setf 함수의두번째인자로사용할수있는값 값 adjustfield 의미 (internal left right) 와같은값이다. internal 과 left 와 right 를비트단위 OR 연산한것이다. basefield (dec hex oct) 와같은값이다. floatfield (fixed scientific) 과같은값이다. 13
프로그램예제 : 인자가둘인 setf 함수 #include <iostream> using std::cout; using std::endl; using std::ios_base; int main() { cout.setf(ios_base::hex, ios_base::basefield); cout << 10 << endl; cout.setf(ios _ base::oct, ios_ base::basefield); cout << 10 << endl; } return 0; 14
프로그램예제 : 그밖의함수들... #include <iostream> using std::cout; using std::endl; using std::ios_base; int main() { cout << 123 << endl; cout.width(10); cout << 123 << endl; cout.fill('0'); cout.width(10); cout << 123 << endl; } return 0; 15
조종자 (Manipulator) setf 함수나기타함수들을쉽게호출하는방법 boolalpha showbase showpoint showpos uppercase noboolalpha noshowbase noshowpoint noshowpos nouppercase dec hex oct fixed scientific internal left right 16
프로그램예제 : 조정자 #include <iostream> using std::cout; using std::endl; using std::boolalpha; using std::noboolalpha;; int main() { cout << boolalpha << true << endl; cout << false << endl; cout << noboolalpha << true << endl; cout << false << endl; } return 0; 17
<iomanip> 헤더파일 인자를받을수있는조종자를몇개더정의 값 의미 setiosflags setf 함수를사용하는것과동일한효과가있다. resetiosflags setf 함수를통해서지정한옵션을제거하는효과가있다. setfill fill 함수를호출한효과가있다. setprecision precision 함수를호출한효과가있다. setw width 함수를호출한효과가있다. setbase 8, 10, 16 중에한값을넣어서출력하는진법을바꿀수있다. 18
프로그램예제 : 조정자와 iomanip #include <iostream> #include <iomanip> using std::cout; using std::endl; using std::hex; using std::dec; using std::oct; using std::setbase; int main() { cout << hex << 10 << endl; cout << dec << 10 << endl; cout << oct << 10 << endl; cout << setbase(16) << 10 << endl; cout << setbase(10) << 10 << endl; cout << setbase(8) << 10 << endl; } return 0; 19
프로그램예제 : 조정자와 iomanip #include <iostream> #include <iomanip> using std::cout; using std::endl; using std::left; using std::right; using std::setw; int main() { int num = 12345; cout << setw(10) << num << endl; cout << left << setw(10) << num << endl; cout << right << setw(10) << num << endl; } return 0; 20
파일입출력 ifstream 과 ofstream 클래스의상속계층도 basic_istream basic_ostream basic_ifstream basic_ofstream class basic_ofstream : public basic_ostream class basic_ofstream : public basic_ostream typedef basic_ofstream<char> ofstream; typedef basic_ifstream<char> ifstream; 21
파일입출력 (cont d) 파일개방 생성자나 open 멤버함수를사용할수잇다. 파일이름만제공하면출력, 혹은입력용으로파일을생성한다. ofstream file1( test.txt ); ofstream file2; file.open( copy.txt ); 22
파일개방 (cont d) 스트림열기옵션 파일입출력 (cont d) 값 의미 app 파일의끝에자료를추가하기위한용도로연다. ate 파일을열고파일의끝으로이동한다. binary 텍스트 (text) 가아닌바이너리 (binary) 로입출력을한다. in 파일에서값을읽기위한용도로연다. out 파일에값을쓰기위한용도로연다. truc 기존파일이있다면지워버리고새파일을연다. 23
프로그램예제 : 파일개방 #include <iostream> #include <fstream> using std::cout; using std::endl; using std::ofstream; using std::ifstream; int main() { ofstream fout("test.txt"); } if(!fout) { cout << "test.txt 파일개방실패!!!" << endl; return -1; } fout << "Hi~ " << endl; fout << "Clickseo!!!" << endl; fout.close(); return 0; 24
참고문헌 [1] 윤성우, 열혈강의 C++ 프로그래밍, 프리렉, 2007. [2] 이현창, 뇌를자극하는 C++ 프로그래밍, 한빛미디어, 2008. [3] H.M. HM Deitel, P. J. Deitel, C++ HOW TO PROGRAM : 6th Edition, Prentice Hall, 2009. [4] Wikipedie, http://www.wikipedia.org/. 이강의자료는저작권법에따라보호받는저작물이므로무단전제와무단복제를금지하며, 내용의전부또는일부를이용하려면반드시저작권자의서면동의를받아야합니다. Copyright Clickseo.com. All rights reserved. 25