2015-04-02 15 views
5

In STL, quando faccio s.find(""), restituisce 0 mentre s.find_first_of("") restituisce -1 (npos). Qual è la ragione di questa differenza?find vs find_first_of durante la ricerca di una stringa vuota

+1

Mi aspetterei che 's.find (" ");' restituisca 0 (e lo fa con le implementazioni che ho a portata di mano). Ad esempio: http://coliru.stacked-crooked.com/a/3d5a6076bde75e28 –

+0

true. Grazie per la segnalazione. fatto la modifica alla domanda. ancora non spiega la differenza –

risposta

10

s.find(t) trova la prima occorrenza della sottostringa t in s. Se t è vuota, allora quell'occorrenza è all'inizio di s e s.find(t) restituirà 0.

s.find_first_of(t) trova la prima occorrenza di uno dei caratteri in t. Se t è la stringa vuota, non ci sono caratteri in t, quindi non è possibile trovare occorrenze e find_first_of restituirà npos.

Live on ideone.

+0

ma l'inizio della stringa non ha "". ha "un" giusto?, come nel tuo esempio. dovrebbe s.find ("') restituire anche -1? –

+0

@littlecegian:" "consiste di zero caratteri e c'è sicuramente una sottostringa di lunghezza 0 all'inizio di qualsiasi stringa. (C'è anche una sottostringa di lunghezza 0 di partenza in ogni altra posizione nella stringa, se ci sono altre posizioni, ma quella in posizione 0 è quella più a sinistra.) – rici

+0

se questo è il caso, find_first_of dovrebbe anche restituire 0 poiché, di tutti i caratteri in "", la stringa vuota è un carattere che quando viene cercato restituisce 0. giusto? –

Problemi correlati