Подходы, использующие string::find()
или string::substr()
, не являются оптимальными, поскольку они либо делают копию вашей строки, либо ищут больше совпадений в начале строки.Это может не быть проблемой в вашем случае, но если это так, вы можете использовать алгоритм std::equal
.Не забудьте проверить, что «стог сена», по крайней мере, такой же длины, как и «иголка».
#include <string>
using namespace std;
bool startsWith(const string& haystack, const string& needle) {
return needle.length() <= haystack.length()
&& equal(needle.begin(), needle.end(), haystack.begin());
}