str.find('X')的反面 - 找到std :: string中与特定char不同的第一个字符的最有效方法是什么?如果我有一个主要由X'es组成的字符串,但在某些时候还有另一个字符 - 我怎么能很快找到它?
答案 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')
可能比仅仅迭代字符更糟糕。