有一串字符str:○认购 ●申购 ●赎回 ○预约赎回。需要把有●的项解析出来,
我用strpbrk(str, "●认购")比较,返回成功,和strpbrk(str, "○认购")的返回一样。请各位高手帮忙解决。
对了~
这样好象不行吧~~
函数原型:
函数名: strpbrk
功 能: 在串中查找给定字符集中的字符
例如:
#include <stdio.h>
#include <string.h>
int main(void)
{
char *string1 = "abcdefghijklmnopqrstuvwxyz";
char *string2 = "onm";
char *ptr;
ptr = strpbrk(string1, string2);
if (ptr)
printf("strpbrk found first character: %c\n", *ptr);
else
printf("strpbrk didnt find character in set\n");
return 0;
}
结果为:m
string2中在 string1中首先出现的是字符m
在串中查找给定字符集中的字符为它的功能~~//又不是这个字符串~
怎么可以查找解析出 ●申购 ●赎回
因为 ●申购 ●赎回 这些都是字符串~~
是因为你的○和●的原因,它们是占了两个字符空间的.而这两个符号的第一个字节是相同的!
解决方案:
用宽字符版本,把char 改成wchar_t, strpbrk改成wcspbrk
附测试代码:
wchar_t *string = (wchar_t*)"○认购 ●申购 ●赎回 ○预约赎回\n";
wchar_t *result;
wchar_t *st1 = (wchar_t*)"●认购", *st2 = (wchar_t*)"○认购";
printf( "1: %s\n", string );
result = wcspbrk( string, st1 );
printf( "2: %s\n", result );
result = wcspbrk( result, st2 );
printf( "3: %s\n", result );
楼主需要的是strstr函数,这样"●认购" "○认购"就能区分开了
下面是我前面说的思路,随便写的,难保没错
char *Str = "○认购 ●认购 ●申购 ●赎回 ○预约赎回";
char *temp, *pStr = Str;
char *pFirst, *pLast;
while (0 != *pStr)
{
pFirst = strstr(pStr, "●");
if (0 != pFirst)
{
pFirst += 2;
pStr = pFirst;
pLast = strstr(pStr, "●");
temp = strstr(pStr, "○");
if ((temp < pLast && 0 != temp) || 0 == pLast)
{
pLast = temp;
}
while (pFirst != pLast && 0 != *pFirst)
{
cout << *pFirst++;
pStr++;
}
}
}