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

C++ QT-使用QTextStream将数据输入写入csv,c++,qt,csv,C++,Qt,Csv,我有来自Arduino的数据,我想将其写入CSV文件。问题是数据不断覆盖现有行。下面是代码示例: QFile data("F:/logdata.csv"); if (data.open(QFile::WriteOnly | QFile::Truncate)) { QTextStream out(&data); out << hum << "," << temp << "," << gas << '\n'

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

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


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



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


 }
QFile数据(“F:/logdata.csv”);

if(data.open(QFile::WriteOnly | QFile::Truncate)){ QTextStream out(数据和数据);
out打开文件时,使用“QIODevice::Append”标志,这样您写入文件的数据将被追加到文件的末尾

例如:

data.open(QFile::WriteOnly | QFile::Truncate |QIODevice::Append)

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

请参阅:

QIODevice::Truncate如果可能,设备在打开之前会被截断。所有这些都是以前的 设备的内容丢失

正如Ibarros所建议的那样,使用
QIODevice::Append
标志确保数据被追加

更新

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

data.open(QIODevice::ReadWrite| QIODevice::Append)

我试着放进这行:if(data.open(QFile::WriteOnly | QFile::Truncate | QFile::Append))但没有任何区别。试一下QIODevice::Append(QFile::WriteOnly | QFile::Truncate | QIODevice::Append)像这样?它仍然覆盖现有的行删除Truncate标志。很高兴我能帮上忙。