[EMAIL PROTECTED] wrote:
> Here are two functions that read text and binary file into string.

Alex, apart from being really horrible C++[1], do these functions do
anything different except that they operate on different streams for
input? I just scanned them visually and could not find any other
differences...

Also, the code seems pretty convoluted, if anything there explicitly
matters, you completely fail to point out that difference.

Uli

[1]: I'm not sure if/where it matters, here's how it could have been
written differently:

> string txt_file_to_string ()

If the two functions are the same, you could as well have passed the stream
as reference:
  string to_string( std::ifstream& in)
or alternatively passing along the expected size.

> ostringstream oss;

Starting with this, there is an operator>> overload that takes a
streambuffer on the right hand side, so copying the file into that buffe
would be a mere
  in >> oss.rdbuf();

> vector<char> v (infile_txt_filesize);
>   fs_infile_txt.read(&v[0], infile_txt_filesize);

Could init the vector with the content of the file instead:
  vector<char> v( (istream_iterator<char>(in)), istream_iterator());

> ostream_iterator<char> out(oss);
>   copy (&v[0], &v[v.size()], out);

You're thinking too complicated:
  copy( v.begin(), v.end(), ostream_iterator<char>(oss));

>   return oss.str();

How about 
  return std::string( (istream_iterator<char>(in)), istream_iterator());
here? Alternatively, something like this:
  std::string res(infile_filesize);
  std::copy( istream_iterator<char>(in), istream_iterator(), str.begin());


-- 
http://gcc.gnu.org/faq.html
http://parashift.com/c++-faq-lite/

_______________________________________________
Help-gplusplus mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-gplusplus

Reply via email to