0
Ich kann unmöglich Erklärung für das folgende Verhalten finden:Boost.IOStreams: Wie man Dateiströme mit 'rdbuf' richtig umleitet?
#include <boost/iostreams/device/file.hpp>
#include <boost/iostreams/stream.hpp>
#include <iostream>
#include <sstream>
TEST_CASE(rdbuf) {
{
boost::iostreams::stream<boost::iostreams::file_sink> file("test");
file << "Hello, World!";
}
{
boost::iostreams::stream<boost::iostreams::file_source> file("test");
std::string line;
std::getline(file, line);
CHECK_EQUAL(line, "Hello, World!");
}
{
boost::iostreams::stream<boost::iostreams::file_source> file("test");
std::istringstream iss;
std::string line;
file.rdbuf(iss.rdbuf());
std::getline(file, line);
CHECK_EQUAL(line, "");
std::getline(iss, line);
CHECK_EQUAL(line, ""); // (1) Why?
}
{
boost::iostreams::stream<boost::iostreams::file_source> file("test");
std::ostringstream oss;
std::string line;
file.rdbuf(oss.rdbuf());
std::getline(file, line);
CHECK_EQUAL(line, "");
line = oss.str();
CHECK_EQUAL(line, ""); // (2) Why?
}
}
In beiden Fällen (1)
und (2)
, erwartete ich eher
CHECK_EQUAL(line, "Hello, World!");
erfolgreich zu sein.
Was vermisse ich eigentlich hier? Vielen Dank.