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

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);

最佳答案

您想要的是std::istream_iterator:

std::string myString ( std::istream_iterator(inputFile) , std::istream_iterator() ) ;
std::istringstream is ( myString ) ;

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

这解决了您眼前的问题,但是几乎可以肯定,有一种更好的方法可以完成您要尝试做的事情。例如:
  • 传递istream而不是istringstream(因为这样就不必复制它)。
  • 将算法更改为不需要istringstream
  • 关于c++ - 如何将ifstream转换为istringstream,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35422961/

    10-11 18:20