2012-08-07 68 views
0

str.find('X') - 的反義詞找到std :: string中與特定char不同的第一個字符的最有效方法是什麼?如果我有一個主要由X'es組成的字符串,但在某些時候還有另一個字符 - 我如何快速找到它?不同於「X」的第一個字符的搜索字符串

回答

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'; }); 
+1

@dribeas有接受單個字符,也超載。 – jrok 2012-08-07 21:31:50

0

我認爲最有效的方法是迭代字符串,並將每個字符與'X'進行比較,返回第一個不同的字符。

沒有任何關於字符串的預先知識,我沒有看到比O(n)更好的方法,並且連續調用find('X')可能比只遍歷字符更糟糕。