The C library functions fread(), fgets() and gets()
The functions fread(), fgets(), and gets() are implemented as fast block input/output functions where possible.
These fast implementations are part of the ARM stream implementation and they bypass fgetc(). Where the fast implementation is not possible, they are implemented as a loop over fgetc() and ferror(). Each uses the FILE argument opaquely.
If you provide your own implementation of __FILE, __stdin (for gets()), fgetc(), and ferror(), you can use these functions, and the C++ object std::cin directly from the library.