如何在字符串中找到两个相邻的字符?我对相邻字符的搜索应该只考虑我定义的一组字符。
我使用此功能解决了我的问题:
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 * /
}
将来可能对某人有用
答案 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;
}