搜索不同于“X”的第一个字符串的字符串

时间:2012-08-07 21:24:54

标签: c++ stdstring

str.find('X')的反面 - 找到std :: string中与特定char不同的第一个字符的最有效方法是什么?如果我有一个主要由X'es组成的字符串,但在某些时候还有另一个字符 - 我怎么能很快找到它?

2 个答案:

答案 0 :(得分:5)

std::string str = "XXXXXXXXXXXXXXX.XXXXXXXXXXX";

size_t index = str.find_first_not_of('X');

但是一个普通的for for循环也一样好。

或者,如果你想要一个迭代器而不是一个索引,可能是这样的:

std::string::iterator = std::find_if(str.begin(), str.end(),
                        [](char c){ return c != 'X'; });

答案 1 :(得分:0)

我认为最有效的方法是遍历字符串并将每个字符与'X'进行比较,返回第一个不同的字符。

如果没有关于字符串的任何先验知识,我看不到比O(n)更好的方法,并且成功地调用find('X')可能比仅仅迭代字符更糟糕。