gpt4 book ai didi

c++ - 有没有一种可移植的方法可以将标准输入重定向到 C++ 中的字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:57:21 24 4
gpt4 key购买 nike

在 C++ 中是否可以将标准输入重定向到 C++ 中的字符串?

使用 freopen 我可以将标准输入重定向到文件,因此 scanf 和 cin 都将使用该文件的内容。使用对 stringstream 和 cin.rdbuf() 的操作,我可以将 cin 重定向到该字符串,因此对 cin 的任何调用都将使用我的字符串。但是 scanf 将继续使用以前的输入流。我想可以使用 Unix 的管道,但它在 Windows 下不可用。

有没有可能以可移植的方式解决这个问题?

最佳答案

假设 C 和 C++ 标准流是同步的,以下应该有效:

class save_buffer
{
public:
save_buffer(std::ios& str) :
my_str(str),
m_sbuf(str.rdbuf())
{ }

~save_buffer()
{
m_str.rdbuf(m_sbuf);
}
private:
std::ios& m_str;
std::streambuf* m_sbuf;
};

int main()
{
std::istringstream buf;

save_buffer sb(std::cin);
std::cin.rdbuf(buf.rdbuf());
}

关于c++ - 有没有一种可移植的方法可以将标准输入重定向到 C++ 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16443884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com