在 VC++ 中如何查找字符串

比如"feifei"这个字符串,怎样查找它是否包含"f"这个字符呢刚才没说清楚,"feifei"这个是_TCHAR类型的,都可以吗?...... 比如 "feifei" 这个字符串,怎样查找它是否包含 "f" 这个字符呢
刚才没说清楚,"feifei" 这个是 _TCHAR 类型的,都可以吗?...
展开
 我来答
dong_1984dd
推荐于2016-04-23 · TA获得超过1.1万个赞
知道小有建树答主
回答量:1070
采纳率:100%
帮助的人:230万
展开全部
  1. 字符查找函数    
      //查找字符串中指定字符第一次出现的位置   
            LPTSTR StrChr( LPCTSTR lpStart,TCHAR wMatch); //区分大小写   
            char *strchr( const char *string, int c );   
            wchar_t *wcschr( const wchar_t *string, wchar_t c );   
            LPTSTR StrChrI( LPCTSTR lpStart,TCHAR wMatch); //不区分大小写   

          //查找字符串中指定字符最后一次出现的位置   
          LPTSTR StrRChr( LPCTSTR lpStart,LPCTSTR lpEnd,TCHAR wMatch); //区分大小写   
          char *strrchr( const char*string, int c );   
            wchar *wcsrchr( const wchar_t *string, int c );   
            LPTSTR StrRChrI( LPCTSTR lpStart,LPCTSTR lpEnd,TCHAR wMatch); //不区分大小写    
              *注 StrRChr()函数可以通过StrChr()函数和while循环来实现

  2. 补充:   
    查找字符串:   

        _tcsstr(........)   

    字符串转化为double型数字   

        _tcstod( const char *nptr, char **endptr )   

    字符串转化为double型整数(只取整数部分,不取小数)Convert strings to a long-integer value.   

        _tcstoul ( const char *nptr, char **endptr, int base )   

        _tcstol ( const char *nptr, char **endptr, int base )   

    取子字符串   

    Extracts a substring of length nCount characters from this CStringT object, starting at position iFirst (zero-based).   

    CStringT Mid(   
    int iFirst,   
    int nCount   
    ) const;   
    CStringT Mid(   
    int iFirst   
    ) const;   

    example:   

    //typedef CStringT < TCHAR, StrTraitATL < TCHAR > > CAtlString;   

    CAtlString s( _T("abcdef") );   
    _ASSERT( s.Mid( 2, 3 ) == _T("cde") );

iprowq
2008-07-11 · TA获得超过113个赞
知道答主
回答量:48
采纳率:0%
帮助的人:51万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

//ANSI版本
int searchi(const char *buffer, const char *keyword)
{
int k_len, b_len, ch_matches, found, i, j;
b_len = strlen(buffer);
k_len = strlen(keyword);
if (!b_len || !k_len)
return -1;
ch_matches = found = 0;
for (i=0; i<b_len-k_len; i++) {
ch_matches = 0;
for (j=0; j<k_len; j++) {
if (tolower(buffer[i+j]) == tolower(keyword[j])) {
ch_matches++;
if (ch_matches == k_len) {
found++;
i += k_len;
}
}
}
}
return found;
}

int search(const char *buffer, const char *keyword)
{
int k_len, b_len, ch_matches, found, i, j;
b_len = strlen(buffer);
k_len = strlen(keyword);
if (!b_len || !k_len)
return -1;
ch_matches = found = 0;
for (i=0; i<b_len-k_len; i++) {
ch_matches = 0;
for (j=0; j<k_len; j++) {
if (buffer[i+j] == keyword[j]) {
ch_matches++;
if (ch_matches == k_len) {
found++;
i += k_len;
}
}
}
}
return found;
}

//UNICODE版本
int searchiw(const char *buffer, const char *keyword)
{
int k_len, b_len, ch_matches, found, i, j;
char *temp_keyword;
b_len = strlen(buffer);
k_len = strlen(keyword);
if (b_len < 2 || k_len < 2) /* Useless, for words only */
return -1;
if (keyword[0] != ' ' && keyword[k_len-1] != ' ') {
temp_keyword = (char *)calloc(k_len+3, sizeof(char));
if (!temp_keyword)
return -1;
temp_keyword[0] = ' ';
strcat(temp_keyword, keyword);
strcat(temp_keyword, " ");
}
else if (keyword[0] == ' ' && keyword[k_len-1] != ' ') {
temp_keyword = (char *)calloc(k_len+2, sizeof(char));
if (!temp_keyword)
return -1;
strcat(temp_keyword, keyword);
strcat(temp_keyword, " ");
}
else if (keyword[0] != ' ' && keyword[k_len-1] == ' ') {
temp_keyword = (char *)calloc(k_len+2, sizeof(char));
if (!temp_keyword)
return -1;
temp_keyword[0] = ' ';
strcat(temp_keyword, keyword);
}
else {
/* If we get to here and no if statement has executed, keyword already has whitespaces
surrounding it */
temp_keyword = (char *)calloc(k_len+1, sizeof(char));
if (!temp_keyword)
return -1;
strcpy(temp_keyword, keyword);
}
ch_matches = found = 0;
k_len = strlen(temp_keyword); /* Calculate new string length */
for (i=0; i<b_len-k_len; i++) {
ch_matches = 0;
for (j=0; j<k_len; j++) {
if (buffer[i+j] == temp_keyword[j]) {
ch_matches++;
if (ch_matches == k_len) {
found++;
i += k_len;
}
}
}
}
if (temp_keyword != NULL)
free(temp_keyword);
return found;
}

int searchw(const char *buffer, const char *keyword)
{
int k_len, b_len, ch_matches, found, i, j;
char *temp_keyword;
b_len = strlen(buffer);
k_len = strlen(keyword);
if (b_len < 2 || k_len < 2) /* Useless, for words only */
return -1;
if (keyword[0] != ' ' && keyword[k_len-1] != ' ') {
temp_keyword = (char *)calloc(k_len+3, sizeof(char));
if (!temp_keyword)
return -1;
temp_keyword[0] = ' ';
strcat(temp_keyword, keyword);
strcat(temp_keyword, " ");
}
else if (keyword[0] == ' ' && keyword[k_len-1] != ' ') {
temp_keyword = (char *)calloc(k_len+2, sizeof(char));
if (!temp_keyword)
return -1;
strcat(temp_keyword, keyword);
strcat(temp_keyword, " ");
}
else if (keyword[0] != ' ' && keyword[k_len-1] == ' ') {
temp_keyword = (char *)calloc(k_len+2, sizeof(char));
if (!temp_keyword)
return -1;
temp_keyword[0] = ' ';
strcat(temp_keyword, keyword);
}
else {
/* If we get to here and no if statement has executed, keyword already has whitespaces
surrounding it */
temp_keyword = (char *)calloc(k_len+1, sizeof(char));
if (!temp_keyword)
return -1;
strcpy(temp_keyword, keyword);
}
ch_matches = found = 0;
k_len = strlen(temp_keyword); /* Calculate new string length */
for (i=0; i<b_len-k_len; i++) {
ch_matches = 0;
for (j=0; j<k_len; j++) {
if (buffer[i+j] == temp_keyword[j]) {
ch_matches++;
if (ch_matches == k_len) {
found++;
i += k_len;
}
}
}
}
if (temp_keyword != NULL)
free(temp_keyword);
return found;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lryzjy911228
2008-07-11
知道答主
回答量:4
采纳率:0%
帮助的人:0
展开全部
vc++中有string类型,里面有查询函数。直接调用就行了。另外要加一个头文件:#include<string>,用标准名空间: using namespace std
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sgedev
推荐于2016-10-16 · TA获得超过1030个赞
知道小有建树答主
回答量:460
采纳率:0%
帮助的人:636万
展开全部
TCHAR tcStr[] = _T("feifei");

if (_tcschr(tcStr, _T('f') != NULL)
/* 找到 'f' */
else
/* 没找到 */
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tanarri
2008-07-10 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5123
采纳率:33%
帮助的人:8166万
展开全部
CString str="feifei";
if (str.Find("f")!=-1)
cout<<"Found!"<<endl;
else cout<<"Not Found!"<<endl;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式