0

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

4

2 回答 2

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

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

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

或者,如果你想要一个迭代器而不是一个索引,也许像这样:

std::string::iterator = std::find_if(str.begin(), str.end(),
                        [](char c){ return c != 'X'; });
于 2012-08-07T21:27:04.900 回答
0

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

在没有任何关于字符串的先验知识的情况下,我没有看到比 更好的方法O(n),并且连续调用find('X')可能比仅遍历字符更糟糕。

于 2012-08-07T21:26:36.620 回答