我有一个函数可以读取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);发布于 2016-02-16 03:16:25
你想要的是std::istream_iterator
std::string myString ( std::istream_iterator(inputFile) , std::istream_iterator() ) ;
std::istringstream is ( myString ) ;这通过使用begin迭代器( inputFile )和结束迭代器(std::istream_iterator())创建一个包含std::istream_iterator(inputFile)内容的字符串。然后,它从该字符串创建一个string。
这解决了你眼前的问题,但是几乎可以肯定有一个更好的方法来完成你想要做的事情。例如:
istream而不是一个istringstream (因为这样您就不必复制它)。istringstream。发布于 2016-02-16 03:16:36
不能将std::ifstream直接转换为std::istringstream。
但是,使用std::istringstream的函数应该被重写为使用std::istream,这样它就可以同时与std::istringstream和std::ifstream一起使用。
如果您真的想获取一个std::ifstream,并获得一个std::istringstream,那么您应该使用std::istreambuf_iterator来构造一个临时std::string,这是std::istringstream所接受的唯一参数类型。但这设计很糟糕。使用std::istream,并直接传递std::ifstream。
发布于 2016-02-16 03:18:15
字符串流不能从文件中获取,它只能从字符串中获取并分发给字符串。使用getline/etc创建一个字符串来保存文件中的信息,然后将其输入到字符串流中。在使用完字符串后,还要确保清除它。Stringstreamname.clear()。
https://stackoverflow.com/questions/35422961
复制相似问题