c++语言中如何实现把相应的数据保存到CSV表格中
cvs表格的生成路径在当前程序的执行目录下
所生成表格的样例展示
文件名
文件数据
#include "stdafx.h"
#include "iostream"
#include <windows.h>
#include "boost/filesystem.hpp"
using namespace std;
using namespace boost::filesystem;
#pragma comment(lib,"libboost_filesystem-vc120-mt-gd-1_63.lib")
#pragma comment(lib,"libboost_system-vc120-mt-gd-1_63.lib")
#define MAX_PATH 260
bool SaveResult(char* szFileName, char* szSN ,char* szTestHeaders, char* szTestContents)
{
FILE* LogFile;
char szLogFileName[MAX_PATH] = { 0 };
char szLogFilePath[MAX_PATH] = { 0 };
char szHeaders[4096] = { "SN, Time, " };//SN:序列号
//SYSTEMTIME结构体获取当地的时间。
SYSTEMTIME curTime;
GetLocalTime(&curTime);
sprintf_s(szLogFileName, ".\\%s_%04d-%02d-%02d.csv", szFileName, curTime.wYear, curTime.wMonth, curTime.wDay);
char szDateTime[MAX_PATH] = { 0 };
//显示时间间隔
sprintf_s(szDateTime, "%04d/%02d/%02d %02d:%02d:%02d", curTime.wYear, curTime.wMonth, curTime.wDay, curTime.wHour, curTime.wMinute, curTime.wSecond);
char szContents[4096] = { 0 };
char szFixContents[1024] = { 0 };//固定内容
strcat_s(szFixContents, szSN);
strcat_s(szFixContents, ", ");
strcat_s(szFixContents, szDateTime);
strcat_s(szFixContents, ", ");
std::string sLogPath = string(szLogFileName);
boost::filesystem::path LogFileName_path(sLogPath);
if (boost::filesystem::exists(LogFileName_path))
{
errno_t err = fopen_s(&LogFile, szLogFileName, "a+");
if (err != 0 || LogFile==NULL)
{
cout << "打开" << szLogFileName << "文件失败";
return false;
}
}
else
{
errno_t err = fopen_s(&LogFile, szLogFileName, "a+");
if (err == 0)
{
strcat_s(szHeaders, szTestHeaders);
fprintf(LogFile, "%s\n", szHeaders);
}
else
{
cout << "打开" << szLogFileName << "文件失败";
return false;
}
}
strcat_s(szContents, szFixContents);
strcat_s(szContents, szTestContents);
fprintf_s(LogFile, "%s\n", szContents);
fclose(LogFile);
}
int _tmain(int argc, _TCHAR* argv[])
{
char *strTestItem = new char[100];
char *strHeaders = new char[100];
char *strContents = new char[500];
float m_testData = 100.0;
sprintf_s(strTestItem, sizeof("TestData"), "TestData");
sprintf_s(strHeaders, 100, "TestDataKeyName");//需保存数据的键名
sprintf_s(strContents, 200, "TestDataKeyName");
sprintf_s(strContents, 200, "%f", m_testData);//需保存的键值
string strSN = "1";//需保存数据的排列序号
SaveResult(strTestItem, (char*)strSN.c_str(), strHeaders, strContents);
return 0;
}