QTextStream提供空字符串

时间:2016-12-20 09:16:25

标签: c++ qt5

这段代码有什么问题? (在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方法的优势是什么?

1 个答案:

答案 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(); 并再次反序列化。