VC读取TXT文件数据(1)

  一、运用CStdioFile::ReadString()

CStdioFile   f("your   file   name");  
  CString   str;  
  while(f.ReadString(str))  
  {  
          //str里面保存的就是一行值如:1         20.006       123.0       124       125.0  
          //你的格式是固定的,用CString类的成员函数操作  
  }   

二、[程序实现]  
   假设你已有了名为ts.txt的文件在你的工程目录下:  
   {  
      CStdioFile   file;     
      CString   sss;  
      char   ccc[100];  
      DWORD   o=0;  
      int   ol=0;  
      file.Open("ts.txt",CFile::modeRead);  
      while(file.ReadString(sss))  
      {  
     ol++;  
     if(ol>1)//读两次就不读了.  
         break;     
       
      }  
      o=file.GetPosition();//记录上次的结果(读到哪了)  
      .................  
      file.Seek(o,0);//接着上回读  
      while(file.ReadString(sss))  
      {  
     strcpy(ccc,sss);  
     AfxMessageBox(ccc);  
      }  
   }  

三、字符串转换成数值(详情参看MSDN)

atof, atoi, _atoi64, atol

Convert strings to double (atof), integer (atoi, _atoi64), or long (atol).

double atof( const char *string );

int atoi( const char *string );

__int64 _atoi64( const char *string );

long atol( const char *string );

四、两个字符串分割的函数

/****************************************************************************
*
* 函数指针:  SplitCString
* 描    述: 将字符串按给定的符号进行拆分
* 创    建: 黄德才[2008-4-11 8:59:58]
*
* 返    回: [int] - 拆分后的子串个数
*
* 函数参数 :[in]  strIn  - 需要进行拆分的字符串
*   [out] strAryRe- 拆分后的字符串数组
*   [in]  c   - 分割符
****************************************************************************/
int CSysCfgApp::SplitCString(CString strIn, CStringArray& strAryRe, char division)
{
strAryRe.RemoveAll();
if (!strIn.IsEmpty())
{
int nCount = 0;
int nPos = -1;
nPos = strIn.Find(division);
CString strTemp = strIn;
while (nPos != -1)
{
CString strSubString = strTemp.Left(nPos); 
strTemp = strTemp.Right(strTemp.GetLength() - nPos-1); 
nPos = strTemp.Find(division);
nCount++;
strAryRe.Add(strSubString);
}

if (nCount == strAryRe.GetSize())
{
CString str;
int nSize = strIn.ReverseFind(division);
str = strIn.Right(strIn.GetLength()-nSize-1);
strAryRe.Add(str);
}
}

return strAryRe.GetSize();
}

/****************************************************************************
*
* 函数指针:  SplitCString
* 描    述: 将字符串按给定的符号进行拆分
* 创    建: 黄德才[2008-4-11 9:30:58]
*
* 返    回: [int] - 拆分后的子串个数
*
* 函数参数 :[in]  strIn  - 需要进行拆分的字符串
*   [out] strAryRe- 拆分后的字符串数组
*   [in]  str   - 分割字符串
****************************************************************************/
int CSysCfgApp::SplitCString(CString &strIn, CStringArray& strAryRe, LPCTSTR str)
{
if (str == _T(""))
{
strAryRe.RemoveAll();
return 0;
}

int nStart = 0;
int nEnd = 0;
CString strTmp;
while ( (nEnd = strIn.Find(str, nStart)) != -1 )
{
strTmp = strIn.Mid(nStart, nEnd-nStart);
strAryRe.Add(strTmp);
nStart = nEnd+2;
}
strTmp = strIn.Mid(nStart, strIn.GetLength());
strAryRe.Add(strTmp);

return strAryRe.GetSize();

 

应用实例:

CString str;
str="_1_张三_123456789";
CStringArray strAry;
SplitCString(str,strAryRe,'_'); // 分割字符串
for ( int i = 0; i < strAry.GetSize(); i++ )
{
  strAry.GetAt(i) // 数组strAry中每个成员都是分割后的字符串
  // do somthing


}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值