我想在另一個字符串中找到給定的字符串。以前的計算已知可能的開始採購。例如:子串與std :: memcmp或string :: compare比較?
int main()
{
std::string input("Foo Bar Hash Bang");
std::string keyword("Bar");
const char* inputStart = input.c_str() + 4; // at 'B'
std::cout << "memcmp=" << std::memcmp(inputStart, keyword.c_str(), keyword.length()) << "\n";
std::cout << "compare=" << input.compare(4, keyword.length(), keyword) << "\n";
return 0;
}
都相同呢?如果關鍵字長度超過了從起始位置開始的輸入長度,與memcmp
的比較仍然是正確的。 strncmp
是更安全的方法嗎?
爲什麼不使用std :: string提供的find()方法? –
@Oz。性能。那時我已經知道可能的關鍵字的位置和長度。使用find()我必須爲整個輸入字符串上的每個關鍵字調用find。輸入字符串可能根本沒有關鍵字。 – aggsol