\n no es portable??
Es solo para win?
Si es portable o no depende en parte del modo del stream (texto o binario).
En modo texto no hay problema al utilizar '\n' y endl con la única diferencia que el segundo vacía el bufer correspondiente. En modo binario los caracteres se envían tal cual y ambas formas funcionaran correctamente solo si (en la implementación en cuestión) el carácter para indicar el avance de linea es '\n'.
Un saludo