CString Linefenjie(int countLine, char cFenge, CString str)
{
CString strLine = str;
CString str1 = "";
int count = 0;
while(strLine.Find(cFenge) + 1)
{
str1 = strLine.Left(strLine.Find(cFenge));
count++;
if(count == countLine)
{
return str1;
}
//printf("%s\n",str1);
strLine.Delete(0,str1.GetLength()+1);
}
if(countLine == count + 1)
{
return strLine;
}
return "0";
}
/
/
// Test3.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "Test3.h"
#include <tchar.h>
#define _UNICODE
#define UNICODE
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// The one and only application object
CWinApp theApp;
using namespace std;
//最后一个参数返回的是子字符串的数量
CString * SplitString(CString str, char split, int& iSubStrs);
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
int nRetCode = 0;
/
/ initialize MFC and print and error on failure
if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
// TODO: change error code to suit your needs
cerr << _T("Fatal Error: MFC initialization failed") << endl;
nRetCode = 1;
}
else
{
// TODO: code your application's behavior here.
CString strHello;
strHello.LoadString(IDS_HELLO);
//cout << (LPCTSTR)strHello << endl;
}
CString str = "sssdf sfds jieuri lj122 98098";
// CString str = "sfsfsf";
CString* pStr;
int iSubStrs;
pStr = SplitString(str, ' ', iSubStrs);
//如果子字符串的数量为1
if (iSubStrs == 1)
{
/
/Convert CString to char
char* pCh = (LPSTR)(LPCTSTR)str;
printf("%s\n", pCh);
}
else
{
//输出所有子字符串
for (int i = 0; i < iSubStrs; i++)
{
//Convert CString to char
char* pCh = (LPSTR)(LPCTSTR)pStr[i];
printf("%s\n", pCh);
}
delete []pStr;
}
system("pause");
return nRetCode;
}
CString * SplitString(CString str, char split, int& iSubStrs)
{
int iPos = 0; //分割符位置
int iNums = 0; //分割符的总数
CString strTemp = str;
CString strRight;
//先计算子字符串的数量
while (iPos != -1)
{
iPos = strTemp.Find(split);
if (iPos == -1)
{
break;
}
strRight = strTemp.Mid(iPos + 1, str.GetLength());
strTemp = strRight;
iNums++;
}
if (iNums == 0) //没有到分割符
{
//子字符串数就是字符串本身
iSubStrs = 1;
return NULL;
}
//子字符串数组
iSubStrs = iNums + 1; //子串的数量 = 分割符数量 + 1
CString* pStrSplit;
pStrSplit = new CString[iSubStrs];
strTemp = str;
CString strLeft;
for (int i = 0; i < iNums; i++)
{
iPos = strTemp.Find(split);
//左子串
strLeft = strTemp.Left(iPos);
//右子串
strRight = strTemp.Mid(iPos + 1, strTemp.GetLength());
strTemp = strRight;
pStrSplit[i] = strLeft;
}
pStrSplit[iNums] = strTemp;
return pStrSplit;
}
//去空格和特定字符
CString::TrimRight
void TrimRight( );
void CString::TrimRight( TCHAR chTarget );
void CString::TrimRight( LPCTSTR lpszTargets );
参数:
chTarget 要被整理的目标字符。
lpszTargets 一个指向字符串的指针,该字符串中包含了要被整理的目标字符。
说明:
这个成员函数的没有参数的版本用来将字符串最后面的空格修整掉。当在没有参数的情况下调用时,TrimRight从字符串中删除换行符,空格和tab字符。
这个成员函数的需要参数的版本用来将一个特定的字符或一特定的字符从字符串的结尾处删除。
示例:
CString strBefore;
CString strAfter;
strBefore ="Hockey is Best!!!!" ;
strAfter = strBefore;
str.TrimRight('!' );
printf ("Before: \"%s\"\n",(LPCTSTR) strBefore );
printf ("After: \"%s\"\n",(LPCTSTR) strBefore );
strBefore ="Hockey is Best?!?!?!?!" ;
strAfter = strBefore;
str.TrimRight( *?!* );
printf ("Before: \"%s\"\n",(LPCTSTR) strBefore );
printf ( "After: \"%s\"\n",(LPCTSTR) strAfter );
cstring转为int在上面的第一个例子中,字符串“Hockey is Best!!!!”变成了“Hockey is Best”。
在上面的第二个例子中,字符串“Hockey is Best?!?!?!?!”变成了“Hockey isBest”。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论