C++文件保存之----2中方法对比

本文介绍了使用Qt进行数据操作的方法,包括如何将数据保存到CSV文件中。通过示例代码,展示了两种不同的实现方式,一种是直接写入数据,另一种是在指定目录下创建文件并追加数据。
方法一:

#include "QtGuiApplication3.h"
#include"qDebug"
#include"QMessageBox"

#include"string.h"


#include<map>
#include<QTime>
#include <vector>
#include<qdir.h>
#include<memory>
using namespace std;



// 将数据保存到csv文件方法;

void QtGuiApplication3::save_file()
{
	QDateTime current_date_time = QDateTime::currentDateTime();
	QString file_name = current_date_time.toString("yyyy-MM-dd") + ".csv";
	QString strDirName = "Cal_file";
	QDir dir(strDirName);

	if (dir.exists())
	{
		
	}
	else
	{
		dir.mkpath(strDirName);
	}

	file_name = strDirName + "/" + file_name;  // 选择不同目录下保存
	
	
	vector<double> m_t_x;
	vector<double> m_t_y;
	vector<double> m_t_z;

	for (int i = 0; i < 10; i++)
	{
		m_t_x.push_back(i);
		m_t_y.push_back(i*10);
		m_t_z.push_back(i * 100);
	}

	//迭代器
	vector <double>::iterator ibegin,iend;
	ibegin = m_t_x.begin();
	iend = m_t_x.end();

	for (; ibegin != iend; ibegin++)
	{
	    QString tlog;

		tlog = QString("%1,%2,%3").arg(m_t_x[*ibegin]).arg(m_t_y[*ibegin]).arg(m_t_z[*ibegin]);

		QFile file(file_name);//文件命名  
		if (!file.open(QFile::ReadWrite | QFile::Text | QFile::Append))     //检测文件是否打开  
		{
			return;
		}
		QTextStream out(&file);

		out << tlog << endl; // 将数值写如文件

		qDebug()<< tlog << endl;
		file.close();
	}
}



方法二:

//*************************************************************//
// 文件保存
void File_Save_Open::saveDataToFileEx(const QString &filename, QStringList *sRecv)
{
	QStringList head;
	QString filenameEX;
	QString fileName = QCoreApplication::applicationDirPath();

	filenameEX = "Result";

	//////////////////////////////////////
	// 将文件保存在相同文件下的  Log 文件中,保存文件名为:filenameEX + "_" + QDate::currentDate().toString("yyyy-MM-dd") + ".csv"
	fileName = fileName + "/Log/" + filenameEX + "_" + QDate::currentDate().toString("yyyy") + ".csv"; //yyyy-MM-dd
	QFile csvFile(fileName);
	// 若文件Log中没有相同名的文件,创建并写入表头,,若有,直接将内容添加到后面
	if (!csvFile.exists())  //文件不存在,创建并写入表头
	{
		//head << "DateTime";  //按这个顺序保存数据
		if (csvFile.open(QIODevice::WriteOnly | QIODevice::Append))
		{
			QString strTmp;
			//***********************
			head << "名称";  // 此处是添加保存数据对应的名称(只需在后面添加即可)
						   //********************     
			strTmp = head.join(',');
			strTmp.append('\r');
			csvFile.write(strTmp.toUtf8());
			csvFile.close();
		}
	}

	QString str;

	// 保存当下日期
	/* *sRecv << str.append(QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm:ss"));
	str = (*sRecv).join(',');*/

	readCSVdata_RowCloum("test.csv", readData, &Row, &Column); // Row行Column列

															   // 索引到所有文件
	for (int j = 0; j < Column; j++) //此处表示读取数据的列数
	{
		for (int i = 0; i < Row; i++) //数据的行数
		{
			*sRecv << readData[j][i];
			str = (*sRecv).join(',');
			qDebug() << *sRecv << endl;

		}
	}


	str.append('\r');  // 换行	
					   // 关闭文件
	if (csvFile.open(QIODevice::WriteOnly | QIODevice::Append))
	{
		csvFile.write(str.toUtf8());
		csvFile.close();
	}
	(*sRecv).clear();  //清空
}

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值