-1

如何在一个字符串中找到两个相邻的字符?我对相邻字符的搜索应该只考虑我定义的一组字符。

我使用此功能解决了我的问题:

unsigned checkField (myset string, char mychar)
 {
  unsigned counter;

  for (counter = 0; counter <= myset.length () - 1; counter + +)
    if (myset [counter] == mychar)
     return 1;

  return 0; / * NOT FOUND * /
 }

将来可能对某人有用

4

3 回答 3

3

如果可以使用boost,并且您不需要极致的效率,那么最简单的方法可能是使用正则表达式,例如"([abcd])\\1". 有关使用 boost regexp 匹配字符串的详细信息,请参阅boost regex 文档

于 2012-05-24T01:39:13.017 回答
0

一些快速代码:

#include <cstdio>
#include <cstdlib>
#include <cstring>

const char* find_adjacent_string(const char* str, const char* set)
{
    const char* loc = NULL;

    if(set != NULL)
    {
        int size = strlen(set);

        char adj[3];
        adj[2] = '\0';

        for(int i = 0; i + 1 < size; i++)
        {
            adj[0] = set[i];
            adj[1] = set[i + 1];
            loc = strstr(str, adj);
            if(loc != NULL)
            {
                break;
            }
        }
    }

    return loc;
}

int main()
{
    const char* myset = "pl";
    const char* mystr = "apple";

    printf("found at %i\n", find_adjacent_string(mystr, myset) - mystr);

    return 0;
}
于 2012-05-24T02:00:21.183 回答
0

我想您在某个时候分别存储方程式的每个部分?例如。"55" "+" "hh" "+" "bc" ? 在这种情况下,仅仅检查 sizeof 是否为 1 是否足够,如果不是则发送错误?对不起,如果我遗漏了什么!否则,爱德华建议的正则表达式 (+1) 似乎最合适。

编辑:当然,很容易检查这些字符是/不是您在顶部指定的字符。

于 2012-05-24T01:57:09.680 回答