这段代码有什么问题? (在Qt环境中我想使用QTextStream,但结果是 字符串是空的。使用字符串代码工作正常。 BTW:Qt不支持直接常用的模板,比如vector和string,有什么特别的原因吗?)
QString MyFileName;
QTextStream ts;
ts << DirName.c_str()
<< QDate::currentDate().toString("_yyyy_MM_dd.log").toStdString().c_str()
<< " (" << ++VolumeNumber << ")";
ts >> MyFileName;
string FileName= MyFileName.toStdString();
使用标准流,它更简单:
ostringstream oss;
oss << DirName.c_str() << QDate::currentDate().toString("_yyyy_MM_dd.log").toStdString().c_str() << " (" << ++VolumeNumber << ")";
FileName= oss.str();
Qt方法的优势是什么?
答案 0 :(得分:0)
这是因为您没有将任何设备分配给refCount()
。它在body > div.main-wrapper > div > header > div.lower > div > div {
max-height: 60px
}
上运行(您也可以使用QTextStream
,内部将由QIODevice
通过QString
代理),因此它什么都不做。你应该这样做:
QTextStream
输入数据后,设备被设置在最后,因此读取它会给你空字符串,这是另一个错误。要从中读取,您需要使用以下命令重置设备:
QBuffer
将底层设备移至开头。如果它是随机访问设备,您可以QString buffer;
QTextStream ts(&buffer);
到某个位置并从那里开始。
仍然你想要的东西不起作用,因为你序列化了别的东西,而不是你试图反序列化(上面的所有问题都不能承受)。您应首先编写序列化的字符串,将其序列化为ts.device()->reset();
并再次反序列化。