【发布时间】:2013-05-02 20:56:56
【问题描述】:
在 C++ 中是否可以将标准输入重定向到 C++ 中的字符串?
使用 freopen 我可以将标准输入重定向到文件,因此 scanf 和 cin 都将使用该文件的内容。 使用 stringstream 和 cin.rdbuf() 进行操作,我可以将 cin 重定向到该字符串,因此对 cin 的任何调用都可以使用我的字符串。但是 scanf 将继续使用以前的输入流。 我想这可能与 Unix 的管道有关,但它在 Windows 下不可用。
是否有可能以便携的方式解决这个问题?
【问题讨论】:
-
管道也可以在 Windows 中工作,但您需要运行辅助可执行文件。
-
使用文件有什么问题?将您的字符串写入临时文件并将
stdin重定向到它。 -
好吧,这对我来说不是一种方式。我需要在应用程序工作期间进行临时重定向,可能多次。
-
@user315052,希望在内存中预取数据。
-
@flashnik:也许你应该考虑改用
sscanf()。无论如何,您应该考虑使用sscanf()而不是scanf()。