QT-使用QTextStream将输入的数据写入csv

gig*_*oat 1 c++ csv qt

我有来自Arduino的数据,我想将其写入CSV文件。问题在于数据不断覆盖现有行。这是代码示例:

QFile data("F:/logdata.csv");


if (data.open(QFile::WriteOnly | QFile::Truncate)) {
 QTextStream out(&data);



 out << hum << "," << temp << "," << gas << '\n';


 }
Run Code Online (Sandbox Code Playgroud)

A.F*_*ell 5

您是否要重新打开数据并将数据附加到同一文件?在这种情况下,您不想使用该QFile::Truncate标志,因为它会删除该文件中的内容。

请参阅http://doc.qt.io/qt-5/qiodevice.html

QIODevice :: Truncate如果可能,设备在打开之前会被截断。设备的所有早期内容均丢失。

另外,如Ibarros所建议,请使用该QIODevice::Append标志来确保已附加数据。

更新资料

实际上,您也不想使用该QIODevice::WriteOnly标志,因为它将添加截断标志。您应该QIODevice::ReadWrite改用。

data.open(QIODevice::ReadWrite| QIODevice::Append)
Run Code Online (Sandbox Code Playgroud)