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)
你想要的是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.