title: C++ c_str doesn't return entire string
body: <p>I've tried the following code with both normal ifstreams and the current boost:iostream I'm using, both have the same result.</p>
  
  <p>It is intended to load a file from physfs into memory then pass it to a handler to process (eg Image, audio or data). Currently when c_str is called it only returns a small part of the file.</p>
  
  <pre><code>        PhysFS::FileStream file("Resources/test.png" , PhysFS::OM_READ);
  
      if(file.is_open()) {
  
          String* theFile;
  
          theFile = new String((std::istreambuf_iterator&lt;char&gt;(file)), 
          std::istreambuf_iterator&lt;char&gt;());
  
          String::iterator it;
          for ( it=theFile-&gt;begin() ; it &lt; theFile-&gt;end(); it++ ) {
              std::cout &lt;&lt; *it; 
          } // Outputs the entire file
  
          std::cout &lt;&lt; theFile-&gt;c_str(); // Outputs only the first few lines
  
      }
  </code></pre>
  
  <p>The iterator loop outputs the entire png file as expected, but the c_str call only returns the first few characters (\211PNG).</p>
  
  <p>I've been trying variations of this code for quite some time with no success. Any ideas?</p>