• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

선생님 질문 있어요~

19.06.09 20:20 작성 조회수 136

3

안녕하세요 선생님,

입출력 강의를 학습하던 도중,

09분 41초, 14번 줄, ofstream ofs("my_first_file.data"); 

처럼 출력이나 입력에서 ios::binary 옵션을 추가해주 2진 데이터로 입출력을 하는 것이잖아요?

그런데 영상에서는 이걸 생략하시고 하셨는데도. 데이터 파일을 열었을 때 2진데이터로 출력이 되어 있더라구요!

그래서 넣고 빼고 둘다 시도해봤는데, 문자열은 그냥 문자열로 출력이되고, 문자열 포인터들은 2진데이터로 출력이 되더라구요. 메모장에 문자열을 자동으로 디코딩한 것인지, 넣고 빼고의 차이가 없는 것인지 궁금해요..!

 

답변 2

·

답변을 작성해보세요.

1

5분 4초에는 ios::binary flag를 사용하고 있습니다. flag에 따라 binary로 출력되는지 ASCII로 출력되는지를 조절할 수 있다는 내용은 이해하신 것 같네요. 메모장이 디코딩을 해주지는 않으니까 오해 없으시길 바랍니다. 

0

cgzoa님의 프로필

cgzoa

질문자

2019.06.13

아하 그렇군요! 감사합니다. ㅎㅎ

그런데요 선생님, 하나 더 질문이 있어요~

ifs 나 ofs 에서

write, read 함수의 첫 번째 인자가

char * 인 이유는 무엇인가요?

그리고

unsigned data_size = 0;

ifs.read((char*)&data_size, sizeof(data_size));

와 같이 data_size 의 포인터는 unsigned int*형인데 char*로 변경할 수 있는 것도 궁금해요. 혹시 이게 다운캐스팅인가요?