首页 | 源码下载 | 编程控件 | 书籍教程 | 应用方案 | 设计素材 | 项目交易 | 开发文档 | 商业源码 | 我的帐号
登陆我的帐号
帐 号:
密 码:
我还不是会员,需要注册!

截止2004年12月16日
本站源码总量(商业源码除外)RAR压缩为 4,206,733 KB。其中免费源码为 1,124,495 KB,会员源码为 3,082,238 KB
C/C++ 129,555 KB
Delphi 1,258,381 KB
Java 120,937 KB
.Net 36,886 KB
PowerBuilder 954,525 KB
Visual Basic 923,454 KB
ASP 259,795 KB
JSP 4,987 KB
其他 94,723 KB

本站是中国频道、中资源、时代互联顶级代理:注册国际域名70元,国内域名130元,各类ASP、PHP、JSP空间8折优惠!
本站承担各类网站制作开发及方案策划,项目经验丰富,欢迎洽谈!

网站动态
网站春节前夕再次改版!
现在下载速度大幅提高!
想免费下载源码吗?
还有众多资源恭候大家免费…
道歉!
关于资源更新的说明
关于下载错误的原因!
源码资源网新版网站投入运…

当前位置:源码资源网首页 > 开发文档首页 > C/C++ >MFC中几个有用的字符串操作函数

MFC中几个有用的字符串操作函数
人气:25 文字大小:     作者:

// 功能 : 格式化字符串
// 参数 : rString - 输出参数,格式化后的字符串将保存在此字符串中
// nIDS - 将进行替换操作的格式字符串的资源ID
// lpsz1 - 指向将替换格式字符串中“%1”字符的字符串
// lpsz2 - 指向将替换格式字符串中“%2”字符的字符串
void AFXAPI AfxFormatString1 CString& rString, UINT nIDS, LPCTSTR lpsz1);
void AFXAPI AfxFormatString2 CString& rString, UINT nIDS, LPCTSTR lpsz1, LPCTSTR lpsz2);


// Implementation string helpers
void AFXAPI AfxFormatStrings CString& rString, UINT nIDS, LPCTSTR const* rglpsz, int nString);
void AFXAPI AfxFormatStrings CString& rString, LPCTSTR lpszFormat, LPCTSTR const* rglpsz, int nString);


// 功能 : 获取子字符串
// 参数 : rString - 输出参数,保存子字符串
// lpszFullString - 源字符串
// iSubString - 子字符串索引,从0开始计数
// chSep - 子字符串间的分隔字符,默认为’\n’
BOOL AFXAPI AfxExtractSubString CString& rString, LPCTSTR lpszFullString, int iSubString, TCHAR chSep = ’\n’);


////////////////////////////////////////////////////////////////////////////////////////////////////
// Strings in format ".....%1 .... %2 ...." etc.
void AFXAPI AfxFormatStrings CString& rString, UINT nIDS,
LPCTSTR const* rglpsz, int nString)
{
TCHAR szFormat[256];
if  !AfxLoadString nIDS, szFormat) != 0)
{
TRACE1 "Error: failed to load AfxFormatString string 0x%04x.\n", nIDS);
ASSERT FALSE);
return;
}
AfxFormatStrings rString, szFormat, rglpsz, nString);
}


void AFXAPI AfxFormatStrings CString& rString, LPCTSTR lpszFormat,
LPCTSTR const* rglpsz, int nString)
{
// 计算结果字符串的长度
int nTotalLen = 0;
LPCTSTR pchSrc = lpszFormat;
while  *pchSrc != ’\0’)
{
if  pchSrc[0] == ’%’ &&
   pchSrc[1] >= ’0’ && pchSrc[1] <= ’9’) ||
 pchSrc[1] >= ’A’ && pchSrc[1] <= ’Z’)) )
{
// %A comes after %9 -- we’ll need it someday
int i;
if  pchSrc[1] > ’9’)
i = 9 +  pchSrc[1] - ’A’);
else
i = pchSrc[1] - ’1’;
pchSrc += 2;
if  i >= nString)
++nTotalLen;
else if  rglpsz[i] != NULL)
nTotalLen += lstrlen rglpsz[i]);
}
else
{
if  _istlead *pchSrc))
++nTotalLen, ++pchSrc;
++pchSrc;
++nTotalLen;
}
}


pchSrc = lpszFormat;
LPTSTR pchDest = rString.GetBuffer nTotalLen);
while  *pchSrc != ’\0’)
{
if  pchSrc[0] == ’%’ &&
   pchSrc[1] >= ’0’ && pchSrc[1] <= ’9’) ||
 pchSrc[1] >= ’A’ && pchSrc[1] <= ’Z’)) )
{
// %A comes after %9 -- we’ll need it someday
int i;
if  pchSrc[1] > ’9’)
i = 9 +  pchSrc[1] - ’A’);
else
i = pchSrc[1] - ’1’;
pchSrc += 2;
if  i >= nString)
{
TRACE1 "Error: illegal string index requested %d.\n", i);
*pchDest++ = ’?’;
}
else if  rglpsz[i] != NULL)
{
lstrcpy pchDest, rglpsz[i]);
pchDest += lstrlen pchDest);
}
}
else
{
if  _istlead *pchSrc)) // *pchSrc是否多字节字符的首字节
*pchDest++ = *pchSrc++; // 拷贝首字节
*pchDest++ = *pchSrc++;
}
}
rString.ReleaseBuffer  int)  LPCTSTR)pchDest -  LPCTSTR)rString));
// ReleaseBuffer will assert if we went too far
}


void AFXAPI AfxFormatString1 CString& rString, UINT nIDS, LPCTSTR lpsz1)
{
AfxFormatStrings rString, nIDS, &lpsz1, 1);
}


void AFXAPI AfxFormatString2 CString& rString, UINT nIDS, LPCTSTR lpsz1,
LPCTSTR lpsz2)
{
LPCTSTR rglpsz[2];
rglpsz[0] = lpsz1;
rglpsz[1] = lpsz2;
AfxFormatStrings rString, nIDS, rglpsz, 2);
}


BOOL AFXAPI AfxExtractSubString CString& rString, LPCTSTR lpszFullString,
int iSubString, TCHAR chSep)
{
if  lpszFullString == NULL)
return FALSE;


while  iSubString--)
{
lpszFullString = _tcschr lpszFullString, chSep);
if  lpszFullString == NULL)
{
rString.Empty ); // return empty string as well
return FALSE;
}
lpszFullString++; // point past the separator
}
LPCTSTR lpchEnd = _tcschr lpszFullString, chSep);
int nLen =  lpchEnd == NULL) ?
lstrlen lpszFullString) :  int) lpchEnd - lpszFullString);
ASSERT nLen >= 0);
memcpy rString.GetBufferSetLength nLen), lpszFullString, nLen*sizeof TCHAR));
return TRUE;
}
////////////////////////////////////////////////////////////////////////////////////////////////////



 

文章出处:   发表时间:2004-11-20 12:21:05

1条数据记录,分1页显示 上一页 < [1] > 下一页
相关文章  
[源码下载] · comicq源代码
[书籍教程] · VC++ 6.0数据库系统开发实例导航
[书籍教程] · Delphi 7数据库编程学习捷径
[书籍教程] · Delphi百例精解
[书籍教程] · DELPHI综合开发文档

相关评论  
 当前没有评论!
请登陆后再来发表评论!
当前位置:源码资源网首页 > 开发文档首页 > MFC中几个有用的字符串操作函数
会员升级 | 广告服务 | 网站开发 | 联系我们 | 网站动态 | 客户反馈

CodeRes.com 保留所有权利 2004
本站所有资源仅供学习参考,版权归原作者所有,如侵犯了您的权益请与我们联系