我现在有一个子txt文件,里面都是相应的数据,格式化是这样的
[123,122]113 [123,231]12 [123,324]231 。。(后面还有很多相似的值)
其中括号内的是坐标值,我现在要读的的坐标后面对应的数据,也就是113,12和231,请问各位这样应该怎么读出来,已经困惑好多天了,本人菜鸟啊,实在是入不了门,还请大侠们帮忙,求个程序,小妹谢谢了
[123,122]113 [123,231]12 [123,324]231 。。(后面还有很多相似的值)
其中括号内的是坐标值,我现在要读的的坐标后面对应的数据,也就是113,12和231,请问各位这样应该怎么读出来,已经困惑好多天了,本人菜鸟啊,实在是入不了门,还请大侠们帮忙,求个程序,小妹谢谢了
打开文件后把所有的文字都放入一个CString中
运用Find函数和Mid函数可以轻松做到。
比如CString str="[123,122]113 [123,231]12 [123,324]231"
int start=str.Find("[123,122]",0);
int end=str.Find("[123,231]",0);
CString strf=str.Mid(start+9,end-start-9);
后面以此类推,最后转换一下格式就可以了用atoi
/****************************************************************************
*
* 函数指针: 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();
}
str="_1_张三_123456789";
CStringArray strAry;
SplitCString(str,strAryRe,'_'); // 分割字符串
for ( int i = 0; i < strAry.GetSize(); i++ )
{
strAry.GetAt(i) // 数组strAry中每个成员都是分割后的字符串
// do somthing
}
int a1,a2,a3,a4,a5;
a1=str7.GetLength();
LPTSTR p = str7.GetBuffer(100); //... 这个指针 p 发生了很多事情
for( int i = 0 ; i < a1 ; i++)
{
if(p[i]=='_')
{
a2=i+1;
}
} for( a2 ; a2 < a1 ; a2++)
{ if(p[a2]>126)
{
str6+=p[a2];
}
if(p[a2]>=48 && p[a2] <=57)
{
str5+=p[a2];
}
} MessageBox(str6);
MessageBox(str5);