Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Strumienie zostały pierwotnie zaprojektowane pod kątem tekstu, więc domyślnym trybem wyjściowym jest tekst. W trybie tekstowym znak kanału informacyjnego (nowy wiersz) rozszerza się do pary zestawienia powrotnego karetki. Rozszerzenie może powodować problemy, jak pokazano poniżej:
// binary_output_files.cpp
// compile with: /EHsc
#include <fstream>
using namespace std;
int iarray[2] = { 99, 10 };
int main( )
{
ofstream os( "test.dat" );
os.write( (char *) iarray, sizeof( iarray ) );
}
Można oczekiwać, że ten program wyświetli sekwencję bajtów { 99, 0, 10, 0 }; Zamiast tego zwraca dane wyjściowe { 99, 0, 13, 10, 0 }, co powoduje problemy z programem oczekującym danych wejściowych binarnych. Jeśli potrzebujesz prawdziwych danych wyjściowych binarnych, w których znaki są zapisywane nieprzetłumaczone, możesz określić dane wyjściowe binarne przy użyciu argumentu konstruktora openmode strumienia:
// binary_output_files2.cpp
// compile with: /EHsc
#include <fstream>
using namespace std;
int iarray[2] = { 99, 10 };
int main()
{
ofstream ofs ( "test.dat", ios_base::binary );
// Exactly 8 bytes written
ofs.write( (char*)&iarray[0], sizeof(int)*2 );
}