c ++ ifstream to char*

ghi*_*boz 4 c++ string pointers char ifstream

我的代码用ifstream读取文件并解析它,现在我改变了一些东西,我不需要读取文件,'因为从另一个地方读取,所以我有一个char*而不是ifstream ...我怎么能改变我使用ifstream.get()的代码?再次感谢

Bjö*_*lex 8

你刚才把你char *变成了一个std::stringstream.

std::stringstream buffer(your_string);
Run Code Online (Sandbox Code Playgroud)

然后你buffer几乎可以使用它std::ifstream(你无法打开或关闭它).理想情况下,您的parse-method将引用std::istreamas参数,然后它不会介意它接收的输入流类型:

void parse(std::istream & input);
Run Code Online (Sandbox Code Playgroud)

由于这两个std::ifstreamstd::stringstream继承std::istream,你可以将它们作为参数,解析器无需修改运行.

  • 为什么是`stringstream`,而不是`istringstream`?为什么他似乎不需要增加的复杂性? (2认同)