Wpis z mikrobloga

@darsto: Potrzebuję więcej wyjaśnień.
Jeśli X ma np. 5 bajtów a jego rozmiar podaje się w drugim parametrze to co właściwie wnosi że zamieniasz ten obiekt na char który ma jeden bajt? I po co rzucać na niego inne typy danych jeśli chce się je zapisać do pliku w formie binarnej (w sensie czemu fstream write tego wymaga)?
@darsto: Ale chciałem żebyś ty wyjaśnił dokładniej dlaczego jest akurat tak a nie inaczej. char ma jeden bajt no i właściwie co z tego?
Np. tak jak jest, bez rzutowania. Czemu nie można(jest wymagane przez fstream write)?
@look997:

Np. tak jak jest, bez rzutowania. Czemu nie można(jest wymagane przez fstream write)?

czyli jak? template? overloading? da się, ale w obu przypadkach jest więcej kodu i jeszcze jest to mniej wydajne

spróbuj napisać faktyczny kod fstream::write
@look997: Potraktuj dane wejściowe jako wskaźnik na początek danych i ich rozmiar, tak jak z grubsza Ci @darsto powiedział. Jest to najbardziej uniwersalna forma. Można zrobić write dla każdego typu prostego, aczkolwiek najprawdopodobniej takie przeciążenia były by rzadko używane i zaśmiecały by interfejs. Zauważ, że fstream jest częścią większej gruby funkcji pracujących na strumieniach czyli właśnie takich blokach danych o dużych rozmiarach. Strumienie załatwiają konwersję typów prostych na takie właśnie bloki