Если вы хотите знать, начинается ли строка с другой, как бы вы сделали это в C ++ / STL?В Java есть String.startsWith
, в Python также есть string.startwith
, у STL нет прямого метода для этого.Вместо этого есть std::string::find
и std::string::compare
.До сих пор я использовал оба метода, в основном в зависимости от моего текущего настроения:
if ( str1.compare( 0, str2.length(), str2 ) == 0 )
do_something();
if ( str1.find(str2) == 0 )
do_something();
Конечно, вы также можете сделать str.substr(0,str2.length()) == str2
, может быть, есть и другие способы добиться того же.find
немного удобнее, чем compare
, но я видел, как все больше людей рекомендуют compare
, что find
.
Но какой из них предпочтителен ?Есть ли разница в производительности?Это зависит от реализации (GCC, VC ++ и т. Д.)?