如何将 ifstream 转换为 istringstream

use*_*842 5 c++ fstream istringstream

我有一个函数可以读取 anistringstream并对其执行一些操作,所以...我尝试使用读取文件fstream并将fstream对象转换为 anistringstream以便将其传递给我的函数。我不知道该怎么做。任何帮助将非常感激。我仍然是一个初学者,所以如果可以的话请保持简单。

string inputFile(argv[1]);    
ifstream inFile(inputFile.c_str());    
istringstream is;

is >> inFile.rdbuf(); //*******This is wrong and is what I'm having trouble with

function(is);
Run Code Online (Sandbox Code Playgroud)

iAd*_*nct 1

你想要的是std::istream_iterator

std::string myString ( std::istream_iterator(inputFile) , std::istream_iterator() ) ;
std::istringstream is ( myString ) ;
Run Code Online (Sandbox Code Playgroud)

std::istream_iterator(inputFile)这通过使用开始迭代器 ( ) 和结束迭代器 ( )创建一个包含 inputFile 内容的字符串std::istream_iterator()。然后它从该字符串创建一个 istringstream。

这解决了您眼前的问题,但几乎可以肯定有更好的方法来完成您想要做的事情。例如:

  • 传递 anistream而不是 an istringstream(因为这样你就不必复制它)。

  • 更改您的算法以不需要istringstream.