MFC中如何读取.txt文件中的数组 20

像这个文件,我需要从第二行开始读取每一组数据,并且到“#;”退出,请问该怎么在MFC中实现?... 像这个文件,我需要从第二行开始读取每一组数据,并且到“#;”退出,请问该怎么在MFC中实现? 展开
 我来答
qianxun5180
推荐于2017-09-20 · TA获得超过106个赞
知道答主
回答量:76
采纳率:0%
帮助的人:35.4万
展开全部
这么规律的数据就很容易处理了。先readline读一行数据,第一行舍弃。往后每次读一行,然后用字符分割函数,分割成两个字符串再转换一下就行了。你可以选择用for,也可以用while,判断为#就退出。以下是我从网页源码中提取背景音乐地址的代码,你可以看看
bool CMyWinInet_1Dlg::findstring(CString str)
{
char *p=NULL;
CString Music_name="";
CString Music_link="";
CString name="";
CString link="";
bool tis=0;
bool flag=0;
p=str.GetBuffer(str.GetLength()+1);//把字符串传给字符指针
for(;*p!='\0';p++)//从网页源代码中提取音乐地址
{
if(*p==','){tis=1;p++;}
if(tis) name+=*p;
if(*p==':')
{
tis=0;
if(name=="xsong_name:"||name=="xsong_url:")
{
p++;
for(;*p!=',';p++)
{
if(name=="xsong_name:")
{Music_name+=*p; flag=0;link=Music_name;}
if(name=="xsong_url:")
{Music_link+=*p;flag=1;}
}
if(flag)
{
int count = m_Grid.GetItemCount();

CString str;
str.Format(_T("%d"),count+1);
m_Grid.InsertItem(count,"");
m_Grid.SetItemText(count,0,link);
m_Grid.SetItemText(count,1,Music_link);
}
}
name="";
Music_name="";
Music_link="";
}
}
return 0;
}
追问
  • 由于本人之前没有接触过C++,所以读懂语句很费劲!哎~~~

追答
jiaoyuqian2010给的思路基本上就是那样了。只是转换而已~
CString str,num1,num2;
bool flag=0;
char *p=NULL;
while(file.ReadLine(str)!="#;")
{
flag=0;
p=str.GetBuffer(str.GetLength()+1);//把字符串传给字符指针
for(;*p!='\0';p++)
{
if(*p==',')flag=1;
if(!flag)num1+=p;//num1是数据1
else num2+=p;//num2是数据2
}
}
这样可以了吗?
jiaoyuqian2010
2013-12-03 · TA获得超过230个赞
知道小有建树答主
回答量:176
采纳率:100%
帮助的人:97.5万
展开全部
CStdioFile file = new CStdioFile();
file.open(filename,mode);
CString str;
while(file.ReadLine(str)!="#;")
{
将该行的str转换成数组数字,进行后续处理
}
file.Close();

基本思路就是这样,可能一些语法不太对,楼主再确认下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
多情的花_
2013-12-03
知道答主
回答量:20
采纳率:0%
帮助的人:12.7万
展开全部
用CStdioFile,可以按行读取数据,并判断是否遇到‘#’ ,代码自己写吧。
追问
由于我是新手,您能不能把程序写的详细点!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式