现有原文本1.txt,格式如下:
3综合铜 LCPT
时间 开盘价 最高价 最低价 收盘价 成交量 持仓量
3综合铜 LCPT
时间 开盘价 最高价 最低价 收盘价 成交量 持仓量
2005-11-11-18:55:00 4060.5 4060.5 4058.0 4058.0 4 7982
2005-11-11-19:00:00 4064.5 4064.5 4062.0 4062.0 3 7982
2005-11-11-19:05:00 4062.5 4067.5 4060.0 4065.0 20 7982
2005-11-11-19:10:00 4068.5 4074.5 4065.0 4068.0 33 7982
我需要做个基于Dialog的小程序,处理这种文本,处理过后保存为2.txt,格式如下:
3综合铜 LCPT
时间 开盘价 最高价 最低价 收盘价 成交量 持仓量
2005-11-11-18,55,00,4060.5,4060.5,4058.0,4058.0,4,7982
2005-11-11-19,00,00,4064.5,4064.5,4062.0,4062.0,3,7982
2005-11-11-19,05,00,4062.5,4067.5,4060.0,4065.0,20,7982
2005-11-11-19,10,00,4068.5,4074.5,4065.0,4068.0,33,7982
由于我对文本操作不熟悉,所以不知道该怎么下手,希望高手们能指导一下,最好给出代码,谢谢了
注意,原文本的每条数据开头有个空格。
3综合铜 LCPT
时间 开盘价 最高价 最低价 收盘价 成交量 持仓量
3综合铜 LCPT
时间 开盘价 最高价 最低价 收盘价 成交量 持仓量
2005-11-11-18:55:00 4060.5 4060.5 4058.0 4058.0 4 7982
2005-11-11-19:00:00 4064.5 4064.5 4062.0 4062.0 3 7982
2005-11-11-19:05:00 4062.5 4067.5 4060.0 4065.0 20 7982
2005-11-11-19:10:00 4068.5 4074.5 4065.0 4068.0 33 7982
我需要做个基于Dialog的小程序,处理这种文本,处理过后保存为2.txt,格式如下:
3综合铜 LCPT
时间 开盘价 最高价 最低价 收盘价 成交量 持仓量
2005-11-11-18,55,00,4060.5,4060.5,4058.0,4058.0,4,7982
2005-11-11-19,00,00,4064.5,4064.5,4062.0,4062.0,3,7982
2005-11-11-19,05,00,4062.5,4067.5,4060.0,4065.0,20,7982
2005-11-11-19,10,00,4068.5,4074.5,4065.0,4068.0,33,7982
由于我对文本操作不熟悉,所以不知道该怎么下手,希望高手们能指导一下,最好给出代码,谢谢了
注意,原文本的每条数据开头有个空格。
file.Open("1.txt",CFile::modeRead);
CStdioFile newFile;
newFile.Open("2.txt",CFile::modeCreate|CFile::modeWrite);
CString sLine;
BOOL bEnd = file.ReadString(sLine);
while(!bEnd)
{
sLine.TrimLeft();
CString sTime;
float f1,f2,f3,f4;
int i1,i2;
sscanf(sLine,"%s %f %f %f %f %d %d",sTime.GetBuffer(),&f1,&f2,&f3,&f4,&i1,&i2);
sTime.ReleaseBuffer();
sTime.Replace(':',' ');
CString s1,s2,s3;
sscanf(sTime,"%s %s %s",s1.GetBuffer(),s2.GetBuffer(),s3.GetBuffer());
s1.ReleaseBuffer();
s2.ReleaseBuffer();
s3.ReleaseBuffer();
CString sNewLine;
sNewLine.Format("%s,%s,%s,%f,%f,%f,%f,%d,%d",s1,s2,s3,f1,f2,f3,f4,d1,d2);
newFile.WriteString(sNewLine);
bEnd = file.ReadString(sLine);
}
newFile.Close();
file.Close();
你最后两列不是用空格分割的吧?是TAB?
sscanf(sLine,"%s %f %f %f %f\t%d\t%d",sTime.GetBuffer(),&f1,&f2,&f3,&f4,&i1,&i2);
最后2行看起来象TAB