[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
