如何用C++实现读取系统日期并且把系统日期保存到某一txt文件里面?请给出详细代码(包括头文件)谢谢!
系统日期格式如20100831,日期后面还跟有一些信息,保存到txt之后,怎样实现按日期读取文件中日期后面的信息?每次增加一个记录都是在txt最后增加一行,不删除以前的信...
系统日期格式如20100831,日期后面还跟有一些信息,保存到txt之后,怎样实现按日期读取文件中日期后面的信息?
每次增加一个记录都是在txt最后增加一行,不删除以前的信息,一行的格式如:20100830 输入:xx 输出:aa然后转行。 然后在文件中按时间查找某行中的输xx或aa。我的函数是Savedata(double xx,double aa).这个函数的功能是把输入输出和系统日期按上面格式保存到txt文件里面。
然后有两个按日期查找xx和aa的函数:Double Getxx(CDate date),Double Getaa(CDate date),CDate是自定义的日期类。 展开
每次增加一个记录都是在txt最后增加一行,不删除以前的信息,一行的格式如:20100830 输入:xx 输出:aa然后转行。 然后在文件中按时间查找某行中的输xx或aa。我的函数是Savedata(double xx,double aa).这个函数的功能是把输入输出和系统日期按上面格式保存到txt文件里面。
然后有两个按日期查找xx和aa的函数:Double Getxx(CDate date),Double Getaa(CDate date),CDate是自定义的日期类。 展开
4个回答
展开全部
以下是源代码,基于MFC的控制台程序,如果需要cpp文件的话,请告诉我你的邮箱。
// timeRead.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "timeRead.h"
#include <fstream>
#include <iomanip>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
using namespace std;
/*
* @Func : 往文件流out中写入信息,格式为时间:: 内容
*/
void write(ostream &out, const CTime &t)
{
static int cnt = 0; // 当前记录条数
CString szTmp;
// 在时间和内容之间插入一标识符::,起分隔作用,方便提取时间对应的内容
szTmp.Format("%s:: 于%s写入 第%i条记录", t.Format("%Y%m%d"), t.Format("%Y年%m月%d日 %H时%M分%S秒"), ++cnt);
out << LPCSTR(szTmp) << endl;
}
/*
* @Func : 解析格式信息,时间:: 内容,并返回信息
*
* @Parm [in ] szRcdInfo : 记录信息,格式为:时间:: 内容
* @Parm [out] szTime : 时间部分
* @Parm [out] szInfo : 内容部分
*
* @Ret : true格式正确,false格式不正确
*/
bool getInfo(const CString &szRcdInfo, CString &szTime, CString &szInfo)
{
int index = szRcdInfo.Find("::", 0);
if (index == -1) return false;
szTime = szRcdInfo.Left(index);
szInfo = szRcdInfo.Mid(index+2);
return true;
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
ofstream out("output.txt");
if (!out) { cerr << "打开文件output.txt写入错误" << endl; return 1; }
for (int i = 0; i < 10; ++i)
write(out, CTime::GetCurrentTime()); // CTime::GetCurrentTime()用于获取当前系统时间
out.close();
// 读取文件
ifstream in("output.txt");
if (!in) { cerr << "打开文件output.txt读入错误" << endl; return 1; }
CString szRcdInfo, szTime, szInfo;
char buffer[100];
while(in.getline(buffer, 100))
{
szRcdInfo = buffer;
getInfo(szRcdInfo, szTime, szInfo);
cout.flags(cout.flags()|ios::left); // 设置左对齐,默认为右对齐
cout << "[时间] "<< setw(10) << LPCSTR(szTime) << "[内容] " << LPCSTR(szInfo) << endl;
}
}
return nRetCode;
}
以下是我电脑上的输出结果:
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第1条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第2条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第3条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第4条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第5条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第6条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第7条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第8条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第9条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第10条记录
// timeRead.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "timeRead.h"
#include <fstream>
#include <iomanip>
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
using namespace std;
/*
* @Func : 往文件流out中写入信息,格式为时间:: 内容
*/
void write(ostream &out, const CTime &t)
{
static int cnt = 0; // 当前记录条数
CString szTmp;
// 在时间和内容之间插入一标识符::,起分隔作用,方便提取时间对应的内容
szTmp.Format("%s:: 于%s写入 第%i条记录", t.Format("%Y%m%d"), t.Format("%Y年%m月%d日 %H时%M分%S秒"), ++cnt);
out << LPCSTR(szTmp) << endl;
}
/*
* @Func : 解析格式信息,时间:: 内容,并返回信息
*
* @Parm [in ] szRcdInfo : 记录信息,格式为:时间:: 内容
* @Parm [out] szTime : 时间部分
* @Parm [out] szInfo : 内容部分
*
* @Ret : true格式正确,false格式不正确
*/
bool getInfo(const CString &szRcdInfo, CString &szTime, CString &szInfo)
{
int index = szRcdInfo.Find("::", 0);
if (index == -1) return false;
szTime = szRcdInfo.Left(index);
szInfo = szRcdInfo.Mid(index+2);
return true;
}
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
// initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
ofstream out("output.txt");
if (!out) { cerr << "打开文件output.txt写入错误" << endl; return 1; }
for (int i = 0; i < 10; ++i)
write(out, CTime::GetCurrentTime()); // CTime::GetCurrentTime()用于获取当前系统时间
out.close();
// 读取文件
ifstream in("output.txt");
if (!in) { cerr << "打开文件output.txt读入错误" << endl; return 1; }
CString szRcdInfo, szTime, szInfo;
char buffer[100];
while(in.getline(buffer, 100))
{
szRcdInfo = buffer;
getInfo(szRcdInfo, szTime, szInfo);
cout.flags(cout.flags()|ios::left); // 设置左对齐,默认为右对齐
cout << "[时间] "<< setw(10) << LPCSTR(szTime) << "[内容] " << LPCSTR(szInfo) << endl;
}
}
return nRetCode;
}
以下是我电脑上的输出结果:
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第1条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第2条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第3条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第4条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第5条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第6条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第7条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第8条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第9条记录
[时间] 20100830 [内容] 于2010年08月30日 15时21分08秒写入 第10条记录
展开全部
有两个途径,
一、通过C++语言的自带的库函数获取时间。然后将它转换你要的格式。
二、使用操作系统平台提供的获取时间专用函数接口。
这两个你可以自行查阅。后者查Win32 API。
一、通过C++语言的自带的库函数获取时间。然后将它转换你要的格式。
二、使用操作系统平台提供的获取时间专用函数接口。
这两个你可以自行查阅。后者查Win32 API。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我简单的写了个小程序,有问题hi我哈
#include <time.h>
#include <fstream>
#include <iostream>
using namespace std;
void main()
{
ofstream ofile;
ofile.open("date.txt",ios::out); //输出到文件
if(!ofile)
{
cerr<<"File Open Or Create Fail"<<endl;//文件打开失败
return ;
}
else
{
char s[20];
struct tm* newtime;
time_t aclock;
//while() 可加个循环
time(&aclock); //获取系统时间
newtime = localtime(&aclock); //将aclock中的数值转换后存于结构体中
strftime(s,sizeof(s),"%Y%m%d",newtime);//可加上时间%H:%M:%S
ofile<<s; //把时间输出到文件
ofile<<"this is test!"<<endl;//把数据输出到文件
}
ifstream ifile;
ifile.open("date.txt",ios::in); //打开文件
if(!ifile)
{
cerr<<"File Open Fail"<<endl;
return ;
}
char temp[100],str[100];
while(ifile.getline(temp,100,'\n')) //整行读取
{
strcpy(str,temp+8); //从第8个字符读取
cout<<str<<endl;
}
}
#include <time.h>
#include <fstream>
#include <iostream>
using namespace std;
void main()
{
ofstream ofile;
ofile.open("date.txt",ios::out); //输出到文件
if(!ofile)
{
cerr<<"File Open Or Create Fail"<<endl;//文件打开失败
return ;
}
else
{
char s[20];
struct tm* newtime;
time_t aclock;
//while() 可加个循环
time(&aclock); //获取系统时间
newtime = localtime(&aclock); //将aclock中的数值转换后存于结构体中
strftime(s,sizeof(s),"%Y%m%d",newtime);//可加上时间%H:%M:%S
ofile<<s; //把时间输出到文件
ofile<<"this is test!"<<endl;//把数据输出到文件
}
ifstream ifile;
ifile.open("date.txt",ios::in); //打开文件
if(!ifile)
{
cerr<<"File Open Fail"<<endl;
return ;
}
char temp[100],str[100];
while(ifile.getline(temp,100,'\n')) //整行读取
{
strcpy(str,temp+8); //从第8个字符读取
cout<<str<<endl;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
则个中,以二进制方式存取,这时把文件结构设置好(简单的可以设置个结构体,又或者固定字符串最大长度。然后以一个固定的偏移量访问文件),这样很方便。用xml相关的方法也能办到
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询