专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VC

mfc文件读取有关问题

发布时间:2011-06-23 14:10:21 文章来源:www.iduyao.cn 采编人员:星星草
mfc文件读取问题
我有txt文件,内容是: 
1 (12,23) (23,24) (33,55)
2 (44,55) (27,76) (43,23)
 我要把括号里的每个数字,分别存到我的数组中。不要保存序号、空格和括号。怎么读取呢?

------解决方案--------------------
sscanf
------解决方案--------------------
读入一行,然后找到所有的"("、")"、","的位置,使用CString的:
C/C++ code
// return nCount characters starting at zero-based nFirst
CString Mid(int nFirst, int nCount) const;
// return all characters starting at zero-based nFirst
CString Mid(int nFirst) const;

------解决方案--------------------
探讨

sscanf

------解决方案--------------------
使用CFile读取进来,用mid函数切割。
------解决方案--------------------
C/C++ code
int a1,a2,a3,a4,a5,a6,a7;
while(file.ReadString(str))//按行读取
  {
     if(sscanf(str.GetBuffer(),"%d (%d,%d) (%d,%d) (%d,%d)",&a1,&a2,&a3,&a4,&a5,&a6,&a7)==7)
     {
     //a2,a3,a4,a5,a6,a7
     }
  }

------解决方案--------------------
看例子:

CStdioFile fileR;
if( !fileR.Open(_T("your.txt"),CFile::modeRead|CFile::shareExclusive|CFile::typeText) )
{
AfxMessageBox(_T("读文件出错!") );
return;
}

int iPositionL,iPositionR,iDot;
CString SReadStr,SPositionL,SPositionR,STemp;

//我有txt文件,内容是:
//1 (12,23) (23,24) (33,55)
//2 (44,55) (27,76) (43,23)

while(fileR.ReadString(SReadStr))//SReadStr : 1 (12,23) (23,24) (33,55)
{
iPositionL = -1;
while( (iPositionL = SReadStr.Find ( '(',iPositionL + 1 ) ) != -1 )
{
iPositionR = SReadStr.Find ( ')',iPositionL );

STemp = SReadStr.Mid ( iPositionL + 1, iPositionR - iPositionL - 1 );
//STemp : 12,23

iDot = STemp.Find ( ',' );

SPositionL = STemp.Left ( iDot );// SPositionL : 12
SPositionR = STemp.Mid ( iDot + 1 );// SPositionR : 23
}
}

附注,下面是将字符串转整数例子:

char* Str;

USES_CONVERSION;

Str = T2A( SPositionL.GetBuffer() );//系统宏T2A(W2A)
int iTemp = atoi( Str );
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: