是否可以在没有真实文件的情况下创建 ifstream
Is it possible to create an ifstream without a real file
我正在使用需要 ifstream 对象作为输入的第三方库,并且我有一个 stringstream 对象,其中包含他们需要的一切。现在,我必须将 stringstream 的内容写入文件,然后将 ifstream 对象发送到库。我想知道是否可以在内存中直接将 stringstream 转换为 ifstream,这样我就不需要在磁盘上写入文件了?谢谢。
我的图书馆确实接受 std::ifstream
而不是 std::istream
,然后我发现了以下 hack:
#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;
}
不过,我不确定它的安全性如何,因此您可以进一步调查该主题。
我正在使用需要 ifstream 对象作为输入的第三方库,并且我有一个 stringstream 对象,其中包含他们需要的一切。现在,我必须将 stringstream 的内容写入文件,然后将 ifstream 对象发送到库。我想知道是否可以在内存中直接将 stringstream 转换为 ifstream,这样我就不需要在磁盘上写入文件了?谢谢。
我的图书馆确实接受 std::ifstream
而不是 std::istream
,然后我发现了以下 hack:
#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;
}
不过,我不确定它的安全性如何,因此您可以进一步调查该主题。