VC读取TXT文件数据(1)
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)
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
}
}