永发信息网

怎样确定字符在CString类型的字符串中的位置 MFC

答案:2  悬赏:50  手机版
解决时间 2021-11-21 19:08
  • 提问者网友:且恨且铭记
  • 2021-11-20 21:39
怎样确定字符在CString类型的字符串中的位置 MFC
最佳答案
  • 五星知识达人网友:封刀令
  • 2021-11-20 22:35
CString::Find

int Find( TCHAR ch ) const;
int Find( LPCTSTR lpszSub ) const;
int Find( TCHAR ch, int nStart ) const;
int Find( LPCTSTR lpszSub, int nStart ) const;

返回值:
返回此CString对象中与需要的子字符串或字符匹配的第一个字符的从零开始的索引;如果没有找到子字符串或字符则返回-1。

参数:
ch
要搜索的单个字符。

lpszSub
要搜索的子字符串。

nStart
字符串中开始搜索的字符的索引,如果是0,则是从头开始搜索。如果nStart不是0,则位于nStart处的字符不包括在搜索之内。

pstr 指向要搜索的字符串的指针。
说明:
此成员函数用来在此字符串中搜索子字符串的第一个匹配的字符。函数的重载可以接收单个字符(类似于运行时函数strchr)和字符串(类似于strstr)。
举个例子:使用int Find( LPCTSTR ch, int nStart ),你先找到第一个返回其位置n,然后find(”目标“,n);就可以找到第二个。追问这些我都知道,我的意图是要确定所需查找的字在整个cstring字串中的位置。追答不知道你用的是VC++几,如果支持CStringW
CStringW str = L"羊羊羊羊羊羊";
int n = str.Find(L"羊", 0);
while(n != -1)
{
n = str.Find(L"羊", n+1);
}
这样就行。追问但是如果中间有几个汉字在目标串中找不到,那后面查找到的字的位置就不好确定了。追答找不到就是返回-1,那还需要找吗?还有疑问,在评论中留言,其实不支持CStringW也可以在Unicode模式下编译就行的。
全部回答
  • 1楼网友:末日狂欢
  • 2021-11-20 22:55
int nPos=0, nLastPos=-1;
while(nPos>=0)
{
nPos = Str.Find("洋",nLastPos+1);
// 处理
nLastPos = nPos;
}
// 这样就循环查找所有的了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯