One should not use the .h versions of header files in C++ when there is a non-h version available. They were provided originally for backward compatibility. If you use, for instance, stdio.h, rather than cstdio, you will not get the protection afforded by the std namespace.

Text mode in windows machines also does more than add the CR; it adds a soft EOF. Some append modes do not deal properly with it. Since all files are binary, anyway, it's best not to use text mode unless you know for a fact that a file you are going to read was written in text mode.