To pytanie dotyczy zachowania ifstream i outstream podczas odczytu i zapisu danych do plików.C++ ifstream, ofstream: Jaka jest różnica między surowymi wywołaniami read()/write() a otwieranymi plikami w trybie binarnym?
Od czytania wokół stackoverflow.com udało mi się dowiedzieć, że (operator strumień wstawiania) operator<<
konwertuje obiektów, takich jak podwójna tekstowych reprezentacji przed wyjściem, a także wzywa do read()
i write()
odczytu i zapisu danych surowych, jak to jest zapisane w pamięć (format binarny) odpowiednio. EDYCJA: To jest oczywiste, nic nieoczekiwanego.
Odkryłem również, że otwarcie pliku w trybie binarnym uniemożliwia automatyczne tłumaczenie znaków nowej linii zgodnie z wymaganiami różnych systemów operacyjnych.
Moje pytanie brzmi: czy to automatyczne tłumaczenie, np.; od \n
do \r\n
występuje podczas wywoływania funkcji read()
i write()
? Czy to zachowanie jest specyficzne dla modelu operator<<
. (A także: operator>>
.)
Uwaga istnieje podobne, ale nieco mniej szczegółowe pytanie tutaj. Nie daje jednoznacznej odpowiedzi. Difference in using read/write when stream is opened with/without ios::binary mode
[Tryby binarne i tekstowe] (http://en.cppreference.com/w/cpp/io/c#Binary_and_text_modes) –
@ πάνταῥεῖ To nie odpowiada na pytanie. Wydaje się, że PO zrozumiał różnicę między trybem binarnym a tekstowym. Problem polega na tym, że w strumieniach C++ jest dodatkowa koncepcja sformatowanych i niesformatowanych operacji we/wy. Jak to zrozumiałem, to pytanie dotyczy tego, jak te dwie interakcje. – ComicSansMS
Czy to zachowanie ma również zastosowanie do read()/write(), czy też nie? – user3728501