C++ 将QTextStream转换为std::stringstream
我在.qrc文件中嵌入了一些文本文件。但是,我的后端项目不是基于Qt的,在Qt前端项目中,有几次我必须调用C++ 将QTextStream转换为std::stringstream,c++,qt,stringstream,qt5.4,qtextstream,C++,Qt,Stringstream,Qt5.4,Qtextstream,我在.qrc文件中嵌入了一些文本文件。但是,我的后端项目不是基于Qt的,在Qt前端项目中,有几次我必须调用a::read(std::string const&filePath)-类似函数,它们利用std::ifstream读取文件。当然,std::ifstream无法找到存储在Qt资源系统中的文件,所以我开始考虑转换 使用std::stringstream是我脑海中浮现的第一件事: std::istringstream iss(QTextStream(&file).readAll().t
a::read(std::string const&filePath)
-类似函数,它们利用std::ifstream
读取文件。当然,std::ifstream
无法找到存储在Qt资源系统中的文件,所以我开始考虑转换
使用std::stringstream
是我脑海中浮现的第一件事:
std::istringstream iss(QTextStream(&file).readAll().toStdString());
// I didn't find any conversion functions in QTextStream
但我希望有更好的。(我不需要保留unicode。)
我将接受更接近问题根源的解决方案—qrc。您的文件有多大?你能一次把整篇课文记住吗
std::string content=QTextStream(&file).readAll().toStdString()
就像一个简单的方法。@Simon Warta你是说预加载吗?这不是问题所在。问题涉及使用标准流从Qt资源系统读取文件。但为什么需要使用标准流?为什么从QRC URL到文件内容的方式很重要?@Simon Warta如前所述,后端项目不使用Qt,加载文件的API是函数,采用filepath。因此,我重载了这些函数以获取std::istringstream
sstd::istringstream
可以用QTextStream
读取的数据填充。参数也可以是std::string
,但它最终将构造std::istringstrem
,因为我需要读取格式化文本。那么您发布的代码正是您需要的iss
是包含文件内容副本的std::istringstream。现在您可以读取iss
。