vérifier si la chaîne commence par une autre chaîne: find or compare?

Si vous voulez savoir si une chaîne commence par un autre, comment voudriez-vous faire cela en C++/STL? En Java il n'y a String.startsWithPython a également string.startwithTSL n'ont pas de méthode directe pour elle. Au lieu de cela, il y a std::string::find et std::string::compare. Jusqu'à maintenant j'ai utilisé les deux méthodes, principalement en fonction de mon humeur actuelle:

if ( str1.compare( 0, str2.length(), str2 ) == 0 )
    do_something();
if ( str1.find(str2) == 0 )
    do_something();

Bien sûr, vous pouvez aussi faire str.substr(0,str2.length()) == str2peut-être il ya encore quelques autres façons d'atteindre le même. find est un peu plus maniable que comparemais j'ai vu plus de gens recommander compare que find.

Mais qui est préféré? Est-il une différence de performance? Est-il dépendant de l'implémentation (GCC, VC++, etc)?

source d'informationauteur craesh