1 / 18

File Input/Output

File Input/Output. 황 강 욱 Next Generation Communication Networks Lab. Division of Applied Mathematics KAIST. C++ Input/Output. 스트림 입출력으로 iostream.h 를 반드시 포함 Standard input : cin Standard output : cout Standard error : cerr c.f. cout 을 사용한 출력은 버퍼에 저장 cerr 을 사용한 출력은 버퍼에 저장되지 않음.

kyle
Download Presentation

File Input/Output

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. File Input/Output 황 강 욱 Next Generation Communication Networks Lab. Division of Applied Mathematics KAIST

  2. C++ Input/Output • 스트림 입출력으로 iostream.h를 반드시 포함 • Standard input : cin • Standard output : cout • Standard error : cerr • c.f. • cout을 사용한 출력은 버퍼에 저장 • cerr을 사용한 출력은 버퍼에 저장되지 않음 Next Generation Communication Networks Lab.

  3. #include <iostream> int main() { int id; float av; cout << "Enter the id and the average: "; cin >> id >> av ; cout << "Id " << id << ‘\n’ << "Average" << av << ‘\n’; return 0; } left-associativity Next Generation Communication Networks Lab.

  4. cin : 값을 읽으면 true, 읽지않으면 false 값을 반환 #include <iostream> int main() { int val, sum = 0; cout << "Enter next number: "; while ( cin >> val ) { sum += val; cout << "Enter next number: "; } cout << "Sum of all values: " << sum << '\n'; return 0; } Next Generation Communication Networks Lab.

  5. 조작연산자 (manipulator) • iostream.h 파일이 필요 • dec : 10 진수로 입력 또는 출력을 수행 • endl : 개행문자를 기록하고 출력 스트림을 비움 • flush : 버퍼의 내용을 지움 • hex : 16진수로 입력 또는 출력을 수행 • oct : 8진수로 입력 또는 출력을 수행 Next Generation Communication Networks Lab.

  6. iomanip.h 파일 필요 • setfill (char ch) : 문자(ch)로 빈칸을 채움 • setprecision (int a) : 부동소수점 정밀도를 a로 지정 • setw(int a) : 출력 너비를 a로 지정 • setw()를 제외하고 영구히 입/출력에 영향을 줌 cout << setw( 6 ); for ( i = 1; i <= 1000; i *= 10 ) cout << i << '\n'; 결과 1 10 100 1000 Next Generation Communication Networks Lab.

  7. 예제 int i = 91; cout << "i = " << i << " (decimal)\n"; cout << "i = " << oct << i << " (octal)\n"; cout << "i = " << hex << i << " (hexadecimal)\n"; cout << "i = " << i << " (hexadecimal)\n"; 결과 i = 91 (decimal) i = 133 (octal) i = 5b (hexadecimal) i = 5b (hexadecimal) hex 가 영향을 계속 줌 Next Generation Communication Networks Lab.

  8. HW # 5. • 주어진 manipulation을 모두 이용하여 입력 또는 출력하는 예제 프로그램을 작성하시오. Next Generation Communication Networks Lab.

  9. 입출력 변환 Flags • file_var.setf(flags) • file_var.unsetf(flags) • flag 종류 • ios::left : 왼쪽 정렬 • ios::right : 오른쪽 정렬 • ios::scientific : 과학적 표기법 사용 (d.dddExx) • ios::fixed : 고정표기법을 사용 (d.ddd) • ios::showpoint : 소수점과 소수점이하 0을 표기 • ios::showpos : 음수가 아닌 수에 + 기호 사용 • ios::skipws : 입력시 공백 문자를 건너 뜀 Next Generation Communication Networks Lab.

  10. int i = 5, j = 10; cout.setf(ios::left); //cout.unsetf(ios::left); //cout.setf(ios::right); cout << setw(5) << i << endl << setw(5) << j << endl; 5 10 int i = 5, j = 10; cout.setf(ios::left); cout.unsetf(ios::left); cout.setf(ios::right); cout << setw(5) << i << endl << setw(5) << j << endl; 5 10 Next Generation Communication Networks Lab.

  11. float a = 1.2345000; cout.setf(ios::scientific); cout << setw(15) << a << endl; 1.234500e+000 float a = 1.2345000; cout.unsetf(ios::scientific); cout << setw(15) << a << endl; 1.2345 Next Generation Communication Networks Lab.

  12. float a = 1.23; cout.setf(ios::fixed); cout << setw(15) << a << endl; 1.230000 float a = 1.23; cout.unsetf(ios::fixed); cout << setw(15) << a << endl; 1.23 Next Generation Communication Networks Lab.

  13. float a = 1.2345000; cout.setf(ios::showpo); cout << setw(15) << a << endl; +1.2345 float a = 1.2345000; cout.unsetf(ios::showpo); cout << setw(15) << a << endl; 1.2345 Next Generation Communication Networks Lab.

  14. float a = 1.2345000; cout.setf(ios::showpoint); cout << setw(15) << a << endl; 1.23450 float a = 1.2345000; cout.unsetf(ios::showpoint); cout << setw(15) << a << endl; 1.2345 Next Generation Communication Networks Lab.

  15. ifstream my_in; ofstream my_out; my_in.open("aaa.txt"); my_out.open("bbb.txt"); my_in.unsetf(ios::skipws); char ch; my_in >> ch; while(!my_in.eof()) { my_out << ch; my_in >> ch; } my_in.close(); my_out.close(); aaa.txt bbb.txt 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 Next Generation Communication Networks Lab.

  16. ifstream my_in; ofstream my_out; my_in.open("aaa.txt"); my_out.open("bbb.txt"); my_in.setf(ios::skipws); char ch; my_in >> ch; while(!my_in.eof()) { my_out << ch; my_in >> ch; } my_in.close(); my_out.close(); aaa.txt bbb.txt 0 1 2 3 4 5 6 7 8 9 0123456789 Next Generation Communication Networks Lab.

  17. File Input/Output • fstream.h 파일을 반드시 포함 • 파일 변수의 선언 • ifstream in_file; //입력파일 변수 • ofstream out_file; //출력파일 변수 • 파일 변수와 파일의 연결 • in_file.open(“data_in.txt”); • out_file.open(“data_out.txt”); • 파일 닫기 • in_file.close(); • out_file.close(); Next Generation Communication Networks Lab.

  18. flags • ios::app : 출력파일의 끝에 데이터 추가 • ios::ate : 파일을 열때 맨 끝으로 이동 • ios::in : 입력용으로연다 • ios::out : 출력용으로 연다 • ios::binary : 바이너리 파일 • ios::trunc : 쓰기용으로 열때 기존 파일의 내용을 지움 • ios::nocreate : 파일이 없으면 실패 • ios::noreplace : 파일이 있으면 실패 • ex: ofstream out_file(“data.new”, ios::binary|ios::app); Next Generation Communication Networks Lab.

More Related