在字符串中查找相邻的字符

时间:2012-05-24 01:32:02

标签: c++ string char duplicates

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

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

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 * /
 }

将来可能对某人有用

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

编辑:当然,也很容易检查字符是否是您在顶部指定的字符。

答案 2 :(得分: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;
}