Если ваша библиотека действительно принимает std::ifstream
вместо std::istream
, то я нашел следующий взлом:
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
void foo(std::ifstream& fs)
{
std::string h;
fs >> h;
std::cout << h << std::endl;
}
int main()
{
std::istringstream s1("hello");
std::ifstream s2;
s2.basic_ios<char>::rdbuf(s1.rdbuf());
foo(s2);
return 0;
}
Однако я не уверен, насколько это безопасно, поэтому вы можете исследовать топи c дальше.