Görünüşe bunun için standart bir C fonksiyonu var. Yani: olarak, yukarıda güzel ve net olduğunu, ancak sıkı bir döngü içinde bunu yapıyor ya çok büyük dizeleri ile çalışıyorsanız, en iyi performans sunan olmayabilir
bool startsWith(const char *pre, const char *str)
{
size_t lenpre = strlen(pre),
lenstr = strlen(str);
return lenstr < lenpre ? false : strncmp(pre, str, lenpre) == 0;
}
Not
her iki dizginin tam uzunluğunu tarar (
strlen
).
wj32's veya
Christoph's gibi çözümler daha iyi bir performans sunabilir (her ne kadar
this comment, vektörizasyon ile ilgili olarak C'nin kenarımın ötesindedir). Ayrıca,
str
numaralı telefondan
strlen
'u önleyen
Fred Foo's solution numaralı notu (doğru, gereksiz). Sadece (çok) geniş dizgiler veya sıkı döngülerde tekrarlanan kullanım için önemlidir, ancak önemli olduğunda önemlidir.
Üçüncü örneğinizin doğru bir sonucu olması gerektiğini düşünüyorum. –
@Burr: Evet, doğru. – thejh