第11章C++I/Oシステム(まとめ例)
1.例11-1:ostreamメンバー関数を使用して文字を出力する
2.例11-2:get()とget(char&)を使用して1行の文字を読み込む
3.使用例11-3-:get(char*,int)入力文字列
4.例11-4:getline()行読み出し
5.例11-5:setf()およびunsetf()出力フォーマットを使用する
6.使用例11-6:width()、fill()およびprecision()出力フォーマット
7.例11-7:無パラメータオペレータの使用
8.例11-8:パラメータを使用したオペレータの例
9.例11-9:Pointオブジェクトをストリームに出力する<<演算子を作成する
10.<<演算子>を作成して例11-10:Bookクラスを作成し、Bookオブジェクトをストリームに出力する
11.例11-11:Pointオブジェクトを入力する>>演算子の作成
#include <iostream>
using namespace std;
int main() {
// "Hi!"를 출력하고 다음 줄로 넘어간다.
cout.put('H');
cout.put('i');
cout.put(33); // ASCII 코드 33은 '!' 문자임
cout.put('\n');
// "C++"을 출력한다.
cout.put('C').put('+').put('+').put(' ');
char str[] = "I love programming";
cout.write(str, 6); // str 배열의 6개의 문자 "I love"를 스트림에 출력
}
2.例11-2:get()とget(char&)を使用して1行の文字を読み込む
#include <iostream>
using namespace std;
void get1() {
cout << "cin.get()로 <Enter> 키까지 입력 받고 출력합니다>>";
int ch; // EOF와의 비교를 위해 int 타입으로 선언
while ((ch = cin.get()) != EOF) { // 문자 읽기. EOF는 -1
cout.put(ch); // 읽은 문자 출력
if (ch == '\n') break; // <Enter> 키가 입력되면 읽기 중단
}
}
void get2() {
cout << "cin.get(char&)로 <Enter>키까지 입력 받고 출력합니다>>";
char ch;
while (true) {
cin.get(ch); // 문자 읽기
if (cin.eof()) break; // EOF를 만나면 읽기 종료
cout.put(ch); // ch의 문자 출력
if (ch == '\n') break; // <Enter> 키가 입력되면 읽기 중단
}
}
int main() {
get1(); // cin.get()을 이용하는 사례
get2(); // cin.get(char&)을 이용하는 사례
}
3.使用例11-3-:get(char*,int)入力文字列
#include <iostream>
#include <string>
using namespace std;
int main() {
char cmd[80];
cout << "cin.get(char*, int)로 문자열을 읽습니다." << endl;
while (true) {
cout << "종료하려면 exit을 입력하세요 >> ";
cin.get(cmd, 80); // 79개까지의 영어 문자 읽음.
if (strcmp(cmd, "exit") == 0) {
cout << "프로그램을 종료합니다....";
return 0;
}
else
cin.ignore(1); // 버퍼에 남아있는 <Enter> 키 ('\n') 제거
}
}
4.例11-4:getline()行読み出し
#include <iostream>
using namespace std;
int main() {
char line[80];
cout << "cin.getline() 함수로 라인을 읽습니다." << endl;
cout << "exit를 입력하면 루프가 끝납니다." << endl;
int no = 1; // 라인 번호
while (true) {
cout << "라인 " << no << ">> ";
cin.getline(line, 80); // 79개까지의 문자 읽음
if (strcmp(line, "exit") == 0)
break;
cout << "echo --> ";
cout << line << endl; // 읽은 라인을 화면에 출력
no++; // 라인 번호 증가
}
}
5.例11-5:setf()およびunsetf()出力フォーマットを使用する
#include <iostream>
using namespace std;
int main() {
cout << 30 << endl; // 10진수로 출력
cout.unsetf(ios::dec); // 10진수 해제
cout.setf(ios::hex); // 16진수로 설정
cout << 30 << endl;
cout.setf(ios::showbase); // 16진수로 설정
cout << 30 << endl;
cout.setf(ios::uppercase); // 16진수의 A~F는 대문자로 출력
cout << 30 << endl;
cout.setf(ios::dec | ios::showpoint); // 10진수 표현과 동시에 소숫점 이하 나머지는 0으로 출력
cout << 23.5 << endl;
cout.setf(ios::scientific); // 실수를 과학산술용 표현으로 출력
cout << 23.5 << endl;
cout.setf(ios::showpos); // 양수인 경우 + 부호도 함께 출력
cout << 23.5;
}
6.使用例11-6:width()、fill()およびprecision()出力フォーマット
#include <iostream>
using namespace std;
void showWidth() {
cout.width(10); // 다음에 출력되는 "hello"를 10 칸으로 지정
cout << "Hello" << endl;
cout.width(5); // 다음에 출력되는 정수 12를 5 칸으로 지정
cout << 12 << endl;
cout << '%';
cout.width(10); // 다음에 출력되는 "Korea/"만 10 칸으로 지정
cout << "Korea/" << "Seoul/" << "City" << endl;
}
int main() {
showWidth();
cout << endl;
cout.fill('^');
showWidth();
cout << endl;
cout.precision(5);
cout << 11. / 3. << endl;
}
7.例11-7:無パラメータオペレータの使用
#include <iostream>
using namespace std;
int main() {
cout << hex << showbase << 30 << endl;
cout << dec << showpos << 100 << endl;
cout << true << ' ' << false << endl;
cout << boolalpha << true << ' ' << false << endl;
}
8.例11-8:パラメータを使用したオペレータの例
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
cout << showbase;
// 타이틀을 출력한다.
cout << setw(8) << "Number";
cout << setw(10) << "Octal";
cout << setw(10) << "Hexa" << endl;
// 하나의 수를 십진수, 8진수 16진수 형태로 한 줄에 출력한다.
for (int i = 0; i < 50; i += 5) {
cout << setw(8) << setfill('.') << dec << i; // 10진수
cout << setw(10) << setfill(' ') << oct << i; // 8진수
cout << setw(10) << setfill(' ') << hex << i << endl; // 16진수
}
}
9.例11-9:Pointオブジェクトをストリームに出力する<<演算子を作成する
#include <iostream>
using namespace std;
class Point { // 한 점을 표현하는 클래스
int x, y; // private 멤버
public:
Point(int x = 0, int y = 0) {
this->x = x;
this->y = y;
}
friend ostream& operator << (ostream& stream, Point a);
};
// << 연산자 함수
ostream& operator << (ostream& stream, Point a) {
stream << "(" << a.x << "," << a.y << ")";
return stream;
}
int main() {
Point p(3, 4); // Point 객체 생성
cout << p << endl; // Point 객체 화면 출력
Point q(1, 100), r(2, 200); // Point 객체 생성
cout << q << r << endl; // Point 객체들 연속하여 화면 출력
}
10.<<演算子>を作成して例11-10:Bookクラスを作成し、Bookオブジェクトをストリームに出力する
#include <iostream>
#include <string>
using namespace std;
class Book { // 책을 표현하는 클래스
string title;
string press;
string author;
public:
Book(string title = "", string press = "", string author = "") {
this->title = title;
this->press = press;
this->author = author;
}
friend ostream& operator << (ostream& stream, Book b); // friend 선언
};
// << 연산자 함수
ostream& operator << (ostream& stream, Book b) {
stream << b.title << "," << b.press << "," << b.author;
return stream;
}
int main() {
Book book("소유냐 존재냐", "한국출판사", "예리히프롬"); // Book 객체 생성
cout << book; // Book 객체 book 화면 출력
}
11.例11-11:Pointオブジェクトを入力する>>演算子の作成
#include <iostream>
using namespace std;
class Point { // 한 점을 표현하는 클래스
int x, y; // private 멤버
public:
Point(int x = 0, int y = 0) {
this->x = x;
this->y = y;
}
friend istream& operator >> (istream& ins, Point& a); // friend 선언
friend ostream& operator << (ostream& stream, Point a); // friend 선언
};
istream& operator >> (istream& ins, Point& a) { // >> 연산자 함수
cout << "x 좌표>>";
ins >> a.x;
cout << "y 좌표>>";
ins >> a.y;
return ins;
}
ostream& operator << (ostream& stream, Point a) { // << 연산자 함수
stream << "(" << a.x << "," << a.y << ")";
return stream;
}
int main() {
Point p; // Point 객체 생성
cin >> p; // >> 연산자 호출하여 x 좌표와 y 좌표를 키보드로 읽어 객체 p 완성
cout << p; // << 연산자 호출하여 객체 p 출력
}
Reference
この問題について(第11章C++I/Oシステム(まとめ例)), 我々は、より多くの情報をここで見つけました https://velog.io/@rosesua318/11장-C-입출력-시스템-예제-정리テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol