
C++ builder 怎么从txt文件中提取出你想要的内容, 15
3个回答
展开全部
关键看你的文本文件的格式是怎么样的才能有具体的代码出来
一般情况下这样操作:
打开文本文件
读取文本文件内容到Memo中
逐行读取Memo中的内容,提取与时间对应的经纬度信息
一般情况下这样操作:
打开文本文件
读取文本文件内容到Memo中
逐行读取Memo中的内容,提取与时间对应的经纬度信息
更多追问追答
追问
181736 511这是其中一个文本的一行,另个一个文本的一行是181736 e 45.6 s 54.3
想要在第一个文件中生成181736 511 e 45.6 s 54.3这样的格式。这也是一行。我用了memo可是老是提醒打不开我想打的那个txt文本。
追答
读取文本文件到Memo中的基本方法:
int iFileHandle;
int iFileLength;
int iBytesRead;
char *pszBuffer;
if (OpenDialog1->Execute())
{
try
{
iFileHandle = FileOpen(OpenDialog1->FileName, fmOpenRead);
iFileLength = FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
pszBuffer = new char[iFileLength+1];
iBytesRead = FileRead(iFileHandle, pszBuffer, iFileLength);
FileClose(iFileHandle);
this->Memo1->Text=pszBuffer;
delete [] pszBuffer;
}
catch(...)
{
Application->MessageBox("Can't perform one of the file read operation", "Alert", IDOK);
}
}
写文本文件的基本方法:
char szFileName[MAXFILE+4];
int iFileHandle;
int iLength;
if (SaveDialog1->Execute())
{
if (FileExists(SaveDialog1->FileName))
{
fnsplit(SaveDialog1->FileName.c_str(), 0, 0, szFileName, 0);
strcat(szFileName, ".BAK");
RenameFile(SaveDialog1->FileName, szFileName);
}
iFileHandle = FileCreate(SaveDialog1->FileName);
FileWrite(iFileHandle,this->Memo1->Text.c_str(),this->Memo1->Text.Length());
FileClose(iFileHandle);
}
两个文件合并,如果两个文件之间的行与行是一一对应的,那么就简单了,取第一个文件的每一行,加上第二个文件的相同行的内容(去掉类似于181736这样的行头,可以用文本的SubString方法)。
展开全部
通过时间不可能提取经纬度。你的意思是不是将对应时间的经纬度提取?可以逐行读取,以逗点分隔,先读取解析时间,比较后正确再读取解析经纬度。
追问
恩,我想做的就是通过时间提取对应的经纬度,看了好多资料说用memo可是我试了试貌似不行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
fread读数据块,fseek移动文件内置指针。谢谢采纳。
追问
可以写的具体一点吗?我不是很懂,刚开始学习C++
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询