In addition to the already-mentioned type safety and user-defined operator&lt;&lt; &#x2F;etc overloading, it&#x27;s very liberating to read into a std::string and not have to do a bunch of memory management and worry about null-termination or buffer overflows.