본문 바로가기
C++

[C++ 프로그래밍] 15주차 콘솔/파일 입출력

by heeaeeeee 2023. 12. 14.

1. 참조자(reference)

2. 참조자(reference) 예시

#include <iostream>
using std::cout;
using std::endl;
int main(void)
{
	int x = 10;
	int rx = x;  //int rx = 10;
	cout << x << " " << rx << endl;
	rx = rx + 10;
	cout << x << " " << rx << endl; //참조자(rx)에 변화를 주면 그 타켓(x)도 변함
	x = x + 10;
	cout << x << " " << rx << endl; //타켓(x)에 변화를 주면 그 참조자(rx)도 변함
	return 0;
}

#include <iostream>
using std::cout;
using std::endl;
int main(void)
{
	int x = 10;
	int &rx = x;  //int rx = 10;
	cout << x << " " << rx << endl;
	rx = rx + 10;
	cout << x << " " << rx << endl; //참조자(rx)에 변화를 주면 그 타켓(x)도 변함
	x = x + 10;
	cout << x << " " << rx << endl; //타켓(x)에 변화를 주면 그 참조자(rx)도 변함
	return 0;
}

3. 형식 설정 멤버함수

#include <iostream>
using namespace std;
int main() {
	cout << "디폴트\n";
	cout.width(10); //10자리로 출력
	cout << -50 << endl;
	cout << "[ * fill ]\n";
	cout.fill('*'); //빈 칸을 *로 채우기
	cout.width(10);
	cout << -50 << endl;
	cout.width(10);
	cout << 100.25 << endl;
	cout.width(10);
	cout << "HanSH" << endl;
	cout.fill(' ');
	cout.precision(6); //소수점을 제외한 전체 자리수
	cout << 12.34567 << endl;
	cout << fixed; //소수점 이하의 자리수만 다루게 함
	cout.precision(3);
	cout << 12.34567 << endl;
	return 0;
}

4. 다음 프로그램의 실행 결과는?

#include <iostream>
using namespace std;
int main()
{
	int num = 100;
	cout << "10진수: " << num << endl;
	cout << "16진수: " << hex << num << endl;
	cout << "8진수: " << oct << num << endl;
	return 0;
}

5. setw()/setfill()

#include <iostream>
#include <iomanip>
using namespace std;
int main() 
{
	cout << "abcdefg\n";
	cout << 12345 << endl;
	cout << 123.45 << endl;
	cout << "10칸\n";
	cout << setfill('*');
	cout << setw(10) << "abcdefg" << endl;
	cout << setw(10) << 12345 << endl;
	cout << setw(10) << 123.45 << endl;
	return 0;
}

6. 입출력 조절자(I/O manipulator)

매개변수를 갖는 조절자를 사용하는 경우에는 헤더파일을 include해야 함

7. 파일의 개방/종결 형식

8. 파일로 출력하기

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
	ofstream hout("test.txt"); // 출력파일 스트림 객체 hout 선언
	if (!hout) {
		cout << "출력할 파일을 열 수 없습니다.";
		return 1;
	}
	hout << "집가고싶어\n";
	hout << 777 << endl << hex << 77.7 << endl;
	hout.close(); //파일 종결
	return 0;
}

9. 파일로부터 입력받기

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
	ifstream hin("test.txt"); // 입력파일 스트림 객체 hin 선언
	if (!hin) {
		cout << "입력할 파일을 열 수 없습니다.";
		return 1;
	}
	char str[50];
	int i;
	double j;
	hin >> str >> i >> j;
	cout << str << endl << " " << i << endl<<  " " << j << endl;
	hin.close(); // 파일 종결
	return 0;
}

10. 파일 입출력을 수행하는 프로그램

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
	ofstream hout("test.txt");
	if (!hout) {
		cout << "출력할 파일을 열 수 없음.";
		return 1;
	}
	hout << "Han S. H. \n";
	hout.close();
	ifstream hin("test.txt");
	if (!hin) {
		cout << "입력할 파일을 열 수 없음.";
		return 1;
	}
	char str[50];
	hin >> str;
	cout << str << endl;
	hin.close();
	return 0;
}

11. "test.txt"에 저장된 내용을 읽어들여 공백을 "*"로 채워 화면에 출력

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
	char ch;
	ifstream hin("test.txt");
	if (!hin) {
		cout << "입력할 화일을 열 수 없음";
		return 1;
	}
	hin.unsetf(ios::skipws);//공백 무시x
	while (!hin.eof()) {
		hin >> ch;
		if (ch == ' ') ch = '*';
		cout << ch;
	}
	hin.close();
	return 0;
}

 

 

C++ 강의 자료 참고했습니다.