vc 获取文件行数_科学网—VC之读取任意格式的文本文件 - 王智的博文

通常我们在处理数据时,会遇到不同格式的的文本文件,那么数据的行数和列数就是变化的,就需要用自动识别的方式找出该文本文件的行数和列数。我大概查看了网上的一些资料,现在把所总结出来的VC代码及要注意的地方写出来,方便以后使用!

首先我们利用VC的CStdioFile 类来按行读入,利用CString类对象的Find方法找出分隔符,那么利用空格的个数就可以计算出列数,具体代码如下:

CReadFile_Gen::ReadFile(CString str_Open_FilePath,int iSelectRow)

{

CString   str_Read;//按行读入的字符串

CString msg; //无法打开文件时的消息

CStringArray  strArray;//是个数组

int i=0,size,pos,return_pos=0;//size:文件的总行数 pos:分隔符号的索引值,从0开始

CStdioFile fileinput;

if(!fileinput.Open(str_Open_FilePath, CFile::modeRead|CFile::typeText))

{

msg.Format("无法打开选定文件"+str_Open_FilePath+"!");

AfxMessageBox(msg);

}

while(fileinput.ReadString(str_Read))

{

strArray.Add(str_Read);

}

fileinput.Close();//一定要关闭文件

size=strArray.GetSize();  //得到总行数

str_Select=strArray[iSelectRow-1];//得到指定的字符串,StrArry索引值从0开始

iRow=size-iSelectRow+1;//得到指定位置开始到结束的总行数

str_Select.TrimLeft();

str_Select.TrimRight();

while(return_pos!=-1)//没有找到该分隔符时返回值为-1;

{

pos=str_Select.Find(' '); //返回字符串中该符号的索引值,从0开始索引

if (pos!=-1)

{

strArray_Data.Add(str_Select.Left(pos)); //提取左边开始读入POS个的字符

str_Select=str_Select.Right(str_Select.GetLength()-pos);//注意:提取最右边的N个字符

str_Select.TrimLeft(); //去掉左边的空格                 //每次字符串的长度都在改变,变小

str_Select.TrimRight();//去掉右边空格

}

else

{

str_Select.TrimLeft(); //去掉左边的空格                  //这里需要读进最后一个字符串,每次需要去掉左右的空格

str_Select.TrimRight();//去掉右边空格

strArray_Data.Add(str_Select);

}

return_pos=pos;

iColumn++;

//AfxMessageBox(strArray_Data[iColumn-1]);

}

}

转载本文请联系原作者获取授权,同时请注明本文来自王智科学网博客。

链接地址:http://blog.sciencenet.cn/blog-272367-271988.html

上一篇:研究生学习之我见

下一篇:在对话框窗体上创建视图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值