【问题标题】:QTextStream and std outQTextStream 和标准输出
【发布时间】:2011-11-23 09:42:12
【问题描述】:

我有代码:

QTextStream out(mFileHandle);

out << (QTime::currentTime().toString(Qt::LocalDate) + " - ").toAscii();
out << "Something another";

std::cout << "Data: \n";
std::cout << out.string();
out.flush();

它写入文件但在“数据:”之后我得到“0”,为什么?如何将数据发送到两个流?

【问题讨论】:

    标签: c++ string qt stream


    【解决方案1】:

    在我看来,您从文件句柄中构造了 QTextStream。这意味着它将写入该文件。

    QTextStream 中的 .string() 方法仅用于访问用于构造它的 QString。在这种情况下,它为零,因为您没有使用字符串来构造它。

    如果您想访问已写入 QTextstream 的所有文本,您可能希望将 QByteArray 作为构造函数参数传递给它。这将使其将输出写入该 QByteArray,而不是输出到文件。然后,您可以通过 QByteArray 访问写入流中的内容。

    【讨论】:

    • 您能举个小例子吗?我使用QByteArray 编写了代码,但对于stringconstData 方法,它仍然返回零。
    • 您可以访问写入流的内容通过 QByteArray。 QTextStream 中的 .string() 方法仅用于访问用于构造它的 QString。由于您没有使用 QString 来构造它,因此它将始终返回零。您需要使用 QByteArray 的方法来访问输出数据。
    【解决方案2】:

    你会这样做:

    QByteArray outBytes;
    QTextStream outStream(&outBytes);
    
    //write something to outBytes via stream
    outStream << (QTime::currentTime().toString(Qt::LocalDate) + " - ");
    outStream << "Something another";
    
    //construct QString from written bytes
    std::cout << QString(outBytes).toStdString(); 
    

    【讨论】:

      猜你喜欢
      • 2021-10-20
      • 2013-06-13
      • 2012-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-22
      • 2010-12-01
      • 1970-01-01
      相关资源
      最近更新 更多