一、运用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 }
}