想用vc打开一个txt文件 读取每一行里面指定的内容 并把数据给Cstring
求助 想用vc打开一个txt文件 读取每一行里面指定的内容 并把数据给Cstring
txt文件里面有好几千行 我想一行一行的读,再把内容赋给Cstring ,并分别获取每一行中 第一、二、三个逗号后面的数字 毕业设计要用 本人对vc不是很熟练 求哪位大神给个代码 谢谢了 下面是txt文件里的内容
!AIVDM,1,1,,B,19NS7Uh0038jJolAldqt>iI<06qP,0*5B
!AIVDM,1,1,,A,169E798P1n8fUMrAjLTDMgw<00Sb,0*77
!AIVDM,1,1,,A,177ALp001C8ipgPAk?f:S8Q60<9K,0*35
!AIVDO,1,1,,,100000?P?w<tSF0l4Q@>4?w<0VqP,0*5E
!AIVDM,1,1,,B,15Bfu880288g:2fAnI1KnaQ<06qP,0*22
!AIVDM,2,2,9,B,00000000000,2*2E
!AIVDM,2,2,0,A,Ch000000000,2*0F
!AIVDM,1,1,,A,169<p4gP1d8hgV0AwCKFvww<26qP,0*44
!AIVDM,2,2,2,B,00000000003,2*26
下面是我自己编的读文件 也不知道对不对 读取指定内容那段还不会。。。
void CaisjiemaDlg::OnBnClickedButton4()
{ CFileDialog fileDlg(TRUE);
if(fileDlg.DoModal() == IDOK)
{
CFile file(fileDlg.GetFileName(),CFile::modeRead);
char *pBuf;
DWORD iLen=file.GetLength();
pBuf =new char[iLen ];
pBuf[iLen]=0;
file.Read(pBuf,iLen);
CString str;
str = CString(pBuf);
}
------解决方案--------------------
这是采集的AIS语句阿。
用CStdioFile,不用CFile。CStdioFile有ReadString函数,可以逐行读取。读取到CString中
拆分你就按逗号Find吧,然后Left截取数据,Mid获得剩余部分。
------解决方案--------------------
直接上代码:
头文件:
#include <vector>
#include <string>
using namespace std;
vector<string>m_data;//由于存储截取出来的数据
实现:
void CTestDlg::OnBnClickedButton1()
{
CString filepath;
GetCurrentDirectory(256, filepath.GetBuffer(256));
filepath.ReleaseBuffer();
filepath += "\\data.txt";//文件全路径,把待分析文件放到程序所在路径下
CStdioFile m_file(filepath,CFile::modeRead);
CString contents;
while (m_file.ReadString(contents))
{
string temp = contents;
int pos1 = -1;
for (int pos2 = 1;(pos2 = temp.find(",",pos2)) != temp.npos;pos2 ++)
{
m_data.push_back(temp.substr(pos1+1,pos2 - pos1-1));
pos1 = pos2;
}
m_data.push_back(temp.substr(pos1+1,temp.npos));//记着截取最后一串
}
}
//解出来的数据都放在m_data这个容器里面了,自己取。
txt文件里面有好几千行 我想一行一行的读,再把内容赋给Cstring ,并分别获取每一行中 第一、二、三个逗号后面的数字 毕业设计要用 本人对vc不是很熟练 求哪位大神给个代码 谢谢了 下面是txt文件里的内容
!AIVDM,1,1,,B,19NS7Uh0038jJolAldqt>iI<06qP,0*5B
!AIVDM,1,1,,A,169E798P1n8fUMrAjLTDMgw<00Sb,0*77
!AIVDM,1,1,,A,177ALp001C8ipgPAk?f:S8Q60<9K,0*35
!AIVDO,1,1,,,100000?P?w<tSF0l4Q@>4?w<0VqP,0*5E
!AIVDM,1,1,,B,15Bfu880288g:2fAnI1KnaQ<06qP,0*22
!AIVDM,2,2,9,B,00000000000,2*2E
!AIVDM,2,2,0,A,Ch000000000,2*0F
!AIVDM,1,1,,A,169<p4gP1d8hgV0AwCKFvww<26qP,0*44
!AIVDM,2,2,2,B,00000000003,2*26
下面是我自己编的读文件 也不知道对不对 读取指定内容那段还不会。。。
void CaisjiemaDlg::OnBnClickedButton4()
{ CFileDialog fileDlg(TRUE);
if(fileDlg.DoModal() == IDOK)
{
CFile file(fileDlg.GetFileName(),CFile::modeRead);
char *pBuf;
DWORD iLen=file.GetLength();
pBuf =new char[iLen ];
pBuf[iLen]=0;
file.Read(pBuf,iLen);
CString str;
str = CString(pBuf);
}
cstring
VC
------解决方案--------------------
这是采集的AIS语句阿。
用CStdioFile,不用CFile。CStdioFile有ReadString函数,可以逐行读取。读取到CString中
拆分你就按逗号Find吧,然后Left截取数据,Mid获得剩余部分。
------解决方案--------------------
直接上代码:
头文件:
#include <vector>
#include <string>
using namespace std;
vector<string>m_data;//由于存储截取出来的数据
实现:
void CTestDlg::OnBnClickedButton1()
{
CString filepath;
GetCurrentDirectory(256, filepath.GetBuffer(256));
filepath.ReleaseBuffer();
filepath += "\\data.txt";//文件全路径,把待分析文件放到程序所在路径下
CStdioFile m_file(filepath,CFile::modeRead);
CString contents;
while (m_file.ReadString(contents))
{
string temp = contents;
int pos1 = -1;
for (int pos2 = 1;(pos2 = temp.find(",",pos2)) != temp.npos;pos2 ++)
{
m_data.push_back(temp.substr(pos1+1,pos2 - pos1-1));
pos1 = pos2;
}
m_data.push_back(temp.substr(pos1+1,temp.npos));//记着截取最后一串
}
}
//解出来的数据都放在m_data这个容器里面了,自己取。