我无法找到一个表达式来评估字符串的一部分。
我希望得到类似的东西:
if (string[4:8]=='abc') {...}
我开始这样写:
if (string[4]=='a' && string[5]=='b' && string[6]=='c') {...}
但如果我需要评估像
这样的大部分字符串if (string[10:40] == another_string) {...}
然后它会写出太多的表达式。有没有现成的解决方案?
答案 0 :(得分:6)
您可以随时使用strncmp()
,因此string[4:8] == "abc"
(当然不是C语法)可能会成为strncmp(string + 4, "abc", 5) == 0
。
答案 1 :(得分:2)
您需要的标准C库函数是strncmp
。 strcmp
比较两个C字符串 - 正如通常的模式一样,“n”版本处理有限长度的数据项。
if(0==strncmp(string1+4, "abc", 4))
/* this bit will execute if string1
ends with "abc" (incluing the implied null)
after the first four chars */
答案 2 :(得分:0)
其他人发布的strncmp解决方案可能是最好的。如果你不想使用strncmp,或者只是想知道如何实现自己的strncmp,你可以这样写:
int ok = 1;
for ( int i = start; i <= stop; ++i )
if ( string[i] != searchedStr[i - start] )
{
ok = 0;
break;
}
if ( ok ) { } // found it
else { } // didn't find it