VC++6.0怎样在一行字符串中获取特定两个字符中间的字符串

比如!*********!*********想要提取每一个!*****... 比如!*********!*********想要提取每一个!***** 展开
 我来答
YaNaKaSa
2015-11-05 · TA获得超过114个赞
知道小有建树答主
回答量:86
采纳率:0%
帮助的人:84.4万
展开全部
在VC++中字符串分为ASCII字符串,也就是标准C中的(ASCII)字符串和宽字节字符串,也就是C++中引入的wchar_t类型。获取字符串也可以分为为这两种情况。
对于ASCII字符串:
标准C中:
#include <string.h> char *strchr( const char *str, int ch );
功能:函数返回一个指向str 中ch
首次出现的位置,当没有在str 中找ch到返回NULL。
例如:
char* GetSubString( const char* pStr , char chFirst , char chSecond )
{
char* pFirst = strchr( pStr , chFirst );
if( !pFirst )
{
return NULL;
}
char* pSecond = strchr( pStr , chSecond );
if( !pSecond || pFirst == pSecond )
{
return NULL;
}
char* pTemp = NULL;
if( pFirst > pSecond )
{
pTemp = pFirst;
pFirst = pSecond;
pSecond = pFirst;
}
char* pDest =
reinterpret_cast<char*>malloc( pFirst - pSecond + 1);
//也可用new
if( pDest )
{
return FALSE;
}
pTemp = pDest;
while( pFirst != pSecond )
{
*pTemp++ = *( ++pFirst );
}
pTemp = '\0';
return pDest; //记得free,如果new 要delete []
}
ASCII和Unicode可以用CString.
CString GetSubString( const CString& str , TCHAR chFirst , TCHAR chSecond )
{
int nIndexFirst = str.Find( chFirst );
int nIndexSecond = str.Find( chFirst );
if( nIndexFirst == nIndexSecond || nIndexFirst - nIndexSecond = -1
|| nIndexFirst - nIndexSecond = 1 )
{
return CString( _T( "") );
}
if( nIndexFirst > nIndexSecond )
{
int nTemp = nIndexFirst;
nIndexFirst = nIndexSecond;
nIndexSecond = nTemp;
}
return str.Mid( nIndexFirst , nIndexSecond );
}
注意:
(1)在使用CString的同时要根据当前字符选择是否使用Unicode才能得到正确结果。
是否使用在项目属性中设置,不要手动设置宏开关。
( 2 ) 也可借助STL的string完成上面的功能,类似于CString的用法。
_whales
2013-05-06 · TA获得超过2279个赞
知道大有可为答主
回答量:1814
采纳率:85%
帮助的人:507万
展开全部
1)找到第一个字符(循环)

2)拷贝字符直到找到第二个字符
3)加字符串结束符。

char s[50]="*********!*********想要提取每一个!*****";
char t[50];
while(*s && *s!=‘!')s++;
while(*s &&(*t=*s)!='!'){s++;t++;}
*t='\0';
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
洪修洁53
2015-10-12 · TA获得超过172个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:111万
展开全部
建议用标准模板库做,具体是 string

两次子串匹配找到位置,然后在将目标串的格式转成你要的char *,或者直接用也行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
iamdiscovery
2013-05-08 · 超过10用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:28.2万
展开全部
string s=(自己写);
要求串s1和串s2之间的串为s3
string s3=s.Substring(s.IndexOf(s1),s.IndexOf(s2)-s.IndexOf(s1)-s2.Length);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式