• CSE207 객체지향 강좌 및 C++ 관련, 누구나 묻고 답하는 게시판 입니다.
  • CSE207 수강생이 아니여도 편안하게 질문하세요.
  • 첨부화일은 이미지 화일 혹은 zip 화일로 업로드 하기를 권합니다.

제목질문입니다!2019-09-27 10:50
작성자

#include<iostream>

#include<string>

#include<fstream>

using namespace std;

int main()

{

ofstream fout;

string s1 = "Objective Oriented Programming";

fout.open("example.txt");

fout << s1 << endl;

fout << "Random Variable" << endl;

fout << "Linear Algebra" << endl;

fout.close();


ifstream fin;

char ch;

fin.open("example.txt");

if (!fin)

{

cout << "Error: no such file exists" << endl;

exit(100);

}


while (true)

{

fin.get(ch);

fin >> s1;

if (!fin)

break;

cout << s1 << endl;

cout << ch << endl;


}


return 0;

}

3가지 질문이 있는데요!!

음 일단 이걸 실행하게 되면 example이라는 텍스트 파일안에

Objective Oriented Programming

Random Variable

Linear Algebra

가 만들어졌고, 
1.위와 같은 while문을 쓰게 됬을때 콘솔창에 
bjective
O
Oriented

Programming

Random


Variable

Linear


Algebra

계속하려면 아무 키나 누르십시오 . . .

이렇게 출력이 되었는데요 !  텍스트 파일안의 씨커가 Linear바로 뒤에 도달했을때 
while문처음으로 돌아오고 get함수에 의해서 ch에는 띄어쓰기 가 입력이 되고 s1에는 Algebra가 입력이되면서
씨커가 텍스트파일의 가장 끝에 도달하게 되잖아요. 그러면 fin은 false가 되면서 if문의 조건문을 만족하므로
break가 실행되어서 cout을 하지않은 상태로 종료가 되어 Algebra 와 띄어쓰기는 출력이 되지않아야 하지않나요?ㅠㅠ

2.교수님께서 close를 하지않으면 파일이 저장이 되지않는다고 하셨는데, ifstream 같은경우는 저장할 필요가 없으니 위와 같이 close를 하지않아도
프로그램이 잘 돌아가잖아요 그러면 굳이 안써도 되는건가요?

3.교수님께서 파일에서 문자하나만 입력받고 싶을 땐 get함수를 쓰라고 하셨는데 
char ch;
fin>>ch;를 하는것과 fin.get(ch);의 차이점이 무엇인가요?


댓글
이전응용2번 문제 질문2019-09-27
다음[re]질문입니다!2019-09-30