bool test_seekable_in_chars(std::iostream& io) { int i; // old 'for' scope workaround. // Test seeking with ios::cur for (i = 0; i < data_reps; ++i) { int j; for (j = 0; j < chunk_size; ++j) io.put(narrow_data()[j]); io.seekp(-chunk_size, BOOST_IOS::cur); for (j = 0; j < chunk_size; ++j) if (io.get() != narrow_data()[j]) return false; io.seekp(-chunk_size, BOOST_IOS::cur); for (j = 0; j < chunk_size; ++j) io.put(narrow_data()[j]); } // Test seeking with ios::beg std::streamoff off = 0; io.seekp(0, BOOST_IOS::beg); for (i = 0; i < data_reps; ++i, off += chunk_size) { int j; for (j = 0; j < chunk_size; ++j) io.put(narrow_data()[j]); io.seekp(off, BOOST_IOS::beg); for (j = 0; j < chunk_size; ++j) if (io.get() != narrow_data()[j]) return false; io.seekp(off, BOOST_IOS::beg); for (j = 0; j < chunk_size; ++j) io.put(narrow_data()[j]); } // Test seeking with ios::end io.seekp(0, BOOST_IOS::end); off = io.tellp(); io.seekp(-off, BOOST_IOS::end); for (i = 0; i < data_reps; ++i, off -= chunk_size) { int j; for (j = 0; j < chunk_size; ++j) io.put(narrow_data()[j]); io.seekp(-off, BOOST_IOS::end); for (j = 0; j < chunk_size; ++j) if (io.get() != narrow_data()[j]) return false; io.seekp(-off, BOOST_IOS::end); for (j = 0; j < chunk_size; ++j) io.put(narrow_data()[j]); } return true; }
std::string StringUtilities::GetAsString(std::iostream& i_stream) { int length; char* p_buffer; // get length of file: i_stream.seekg (0, std::iostream::end); length = static_cast<int>(i_stream.tellg()); i_stream.seekg (0, std::iostream::beg); // allocate memory: p_buffer = new char [length]; //write file int pos = 0; while(i_stream.good()) { p_buffer[pos] = i_stream.get(); ++pos; } std::string out(p_buffer, pos); delete[] p_buffer; return out; }