W STL, kiedy robię s.find("")
, zwraca 0, podczas gdy s.find_first_of("")
zwraca -1 (npos). Jaki jest powód tej różnicy?find vs find_first_of przy wyszukiwaniu pustego ciągu znaków
Odpowiedz
s.find(t)
znajduje pierwsze wystąpienie podłańcucha t
w s
. Jeśli t
jest pusta, to zjawisko jest na początku s
i s.find(t)
powróci 0.
s.find_first_of(t)
znajdzie pierwsze wystąpienie jednego z bohaterów w t
. Jeśli t
jest pustym łańcuchem, to w t
nie ma znaków, więc nie można znaleźć wystąpienia, a find_first_of
zwróci npos
.
, ale początek łańcucha nie ma "". ma "a" prawo?, jak w twoim przykładzie. should s.find ("') zwraca także -1? –
@littlecegian:" "składa się z zerowych znaków iz pewnością istnieje podciąg o długości 0 na początku dowolnego ciągu znaków. (Istnieje również podłańcuch o długości 0, począwszy od w każdej innej pozycji w łańcuchu, jeśli istnieją inne pozycje, ale jedna w pozycji 0 jest najdalsza od lewej). – rici
jeśli tak jest, to find_first_of powinno również zwracać 0, ponieważ, ze wszystkich znaków w "" pusty łańcuch jest znak, który po wyszukaniu zwraca 0. right? –
Spodziewam się, że 's.find (" ");' zwróci 0 (i zrobi to przy pomocy użytecznych implementacji). Na przykład: http://coliru.stacked-crooked.com/a/3d5a6076bde75e28 –
prawda. dzięki za wskazanie tego. dokonał zmiany na pytanie. nadal nie wyjaśnia różnicy –