C ++ String Find_first_of

C ++ String Find_first_of

W C ++ Find_first_of, jak dotyczy łańcucha docelowego, oznacza: Znajdź pierwsze wystąpienie sekwencji znaków, w ciągu docelowego ciągu. Konkretne substrowanie może wystąpić więcej niż raz. Więc praca Funkcja Find_first_of () jest znalezienie pierwszego wystąpienia tego konkretnego substring w ciągu docelowego ciągu.

Rozważ ciąg,

„To nie mów nigdy więcej."

Pierwsza postać „I” jest na indeksie zero. Drugi „T” jest w indeksie 1; Trzeci, który jest przestrzenią, znajduje się w indeksie 2; Czwarty „ja” jest w indeksie 3; i tak dalej. „Nigdy” występuje dwukrotnie w dosłownym sznurku. „n” dla pierwszego „nigdy” występuje przy indeksie 11. „n” dla drugiego „nigdy” występuje przy wyższym indeksie. Tak więc pierwsze występowanie „nigdy” zaczyna się w indeksie 11.

Powyższy ciąg musi być listą obiektu ciągów konstruowanego z klasy ciągu. Program C ++ do użycia funkcji C ++ Find_first_of () powinien zacząć od:

#włączać
#włączać
za pomocą przestrzeni nazw Std;

Biblioteka ciągów jest uwzględniona. find_first_of () jest funkcją członkowską klasy stringowej. Cały kod łańcucha dla tego artykułu jest wykonywany w funkcji Main ().

Istnieje pięć wariantów Funkcja Find_first_of (). Gdy jest więcej niż jeden wariant funkcji, mówi się, że funkcja jest przeciążona. W tym artykule wyjaśniono, jak korzystać z przeciążenia Funkcje członków Find_first_of ().

size_type find_first_of (wykres c, size_type pos = 0)

Ta funkcja zwraca wskaźnik pierwszego wystąpienia określonego znaku (substrowanie jednego znaku) w ciągu docelowego. Pierwszy parametr odnosi się do postaci. Drugi parametr wskazuje, że wyszukiwanie rozpoczyna się od indeksu 0 (domyślnie). Konstrukcja (instancja) docelowego obiektu ciągów może być:

String str = "to nie mów nigdy więcej.";

Niech postać będzie szukać, bądź „n”. „N” występuje więcej niż raz. W takim przypadku zwrócona pozycja to 11, ponieważ pierwsza „n” jest w indeksie 11.

Poniższy kod ilustruje użycie tej funkcji, w której argument pierwszego parametru jest identyfikator:

String str = "to nie mów nigdy więcej.";
char ss = 'n';
int i = str.find_first_of (ss);
Cout << i << endl;

Wyjście to 11.

Drugi parametr „size_type pos = 0” w funkcji oznacza, że ​​wyszukiwanie rozpoczyna się od zera. Gdyby wyszukiwanie miało rozpocząć się od indeksu po pierwszym „n”, wówczas indeks drugiego „n” zostałby zwrócony. Poniższy program ilustruje to, a pierwszy argument jest dosłownym.

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String str = "to nie mów nigdy więcej.";
int i = str.find_first_of („n”, 17);
Cout << i << endl;
powrót 0;

Wyjście to 21.

size_type find_first_of (const wykres* s, size_type pos = 0)

Ta funkcja zwraca wskaźnik pierwszego znaku pierwszego wystąpienia konkretnego substring (sekwencja znaków) w ciągu docelowego ciągu. Pierwszy parametr odnosi się do stałego wskaźnika sekwencji znaków (substring). Drugi parametr wskazuje, że wyszukiwanie rozpoczyna się od indeksu 0 (domyślnie, gdy parametr jest nieobecny). Wyjście następującego programu to 11, a wyszukiwanie zaczyna się od zera:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String str = "to nie mów nigdy więcej.";
const char* ss = "nigdy";
int i = str.find_first_of (ss);
Cout << i << endl;
powrót 0;

size_type find_first_of (const t & t, size_type pos = 0)

Ta funkcja zwraca wskaźnik pierwszego znaku pierwszego wystąpienia konkretnego podtrefy (sekwencja znaków), w ciągu docelowego. Pierwszy parametr odnosi się do tablicy książek. Drugi parametr wskazuje, że wyszukiwanie domyślnie rozpoczyna się od indeksu 0. Wyjście następującego programu to 11, a wyszukiwanie zaczyna się od zera:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String str = "to nie mów nigdy więcej.";
char ss [] = "nigdy";
int i = str.find_first_of (ss);
Cout << i << endl;
powrót 0;

Wyjście to 11. Twierdzenie,

char ss [] = "nigdy";
Równie dobrze mógł,
char ss [] = 'n', „e”, „v”, „e”, „r”, '\ 0';

Zwróć uwagę na znak NUL, „\ 0” i jego pozycja. Dosłowne, 'n', „e ',„ v ”,„ e ”,„ r ”,„ \ 0 ” można użyć w kodzie zamiast identyfikatora SS, jak w następującym programie:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String str = "to nie mów nigdy więcej.";
int i = str.find_first_of ('n', „e”, „v”, „e”, „r”, '\ 0');
Cout << i << endl;
powrót 0;

Wyjście to nadal 11, tak jak powinno.

size_type find_first_of (const basic_string & str, size_type pos = 0)

Ta funkcja jest podobna do powyższego, ale pierwszym argumentem jest obiekt ciągów skonstruowany z klasy ciągów. W poniższym programie pierwszym argumentem jest identyfikator obiektu stringowego zbudowanego z klasy ciągów (wyszukiwanie zaczyna się od zera):

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String str = "to nie mów nigdy więcej.";
String ss = "nigdy";
int i = str.find_first_of (ss);
Cout << i << endl;
powrót 0;

Wyjście to 11. Argumentem mogła być konstrukcja sznurka, ja.mi. ciąg („nigdy”) jak w:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String str = "to nie mów nigdy więcej.";
int i = str.find_first_of (string („nigdy”));
Cout << i << endl;
powrót 0;

Wyjście to 11 tutaj. Pamiętaj, że obiekt łańcuchowy może być nadal konstruowany w następujący sposób:

String ss = "nigdy";

Tak więc, dla tej funkcji, pierwszy argument może być nadal dosłownie, jak w następującym programie:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String str = "to nie mów nigdy więcej.";
int i = str.find_first_of („nigdy”);
Cout << i << endl;
powrót 0;

Wyjście to 11.

size_type find_first_of (const wykres* s, size_type POS, size_type n)

Ta funkcja jest podobna do powyższego. Jeśli trzeci argument jest mniejszy lub równy rozmiarowi podtrefy, ale większy niż 0, funkcja zwraca oczekiwaną liczbę. Poniższy kod pokazuje użycie trzeciego argumentu:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String str = "to nie mów nigdy więcej.";
int i = str.find_first_of („nigdy”, 17, 4);
Cout << i << endl;
powrót 0;

Wyjście to 21.

Nie znaleziono sekwencji

Co się stanie? Rozważ następujący program:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String str = "to nie mów nigdy więcej.";
int i = str.find_first_of („bcdfu”);
Cout << i << endl;
powrót 0;

Wyjście to -1. Jeśli sekwencja (substring) nie ma znaku w ciągu docelowego, wartość zwracana funkcji wynosi -1. Jeśli sekwencja jest pustym ciągiem, wartość zwracana jest nadal -1.

Rozważ sekwencję,

„Uehyydew”

I ciąg docelowy,

„To nie mów nigdy więcej."

„H” w substringie jest pierwszym znakiem w substringu, który występuje pierwszy w ciągu docelowego ciągu. Występuje w indeksie 7 w ciągu docelowego.

Tak więc wskaźnik zwracany z łańcucha docelowego, jest pierwszym znakiem substringu, który pasuje do pierwszego wystąpienia w ciągu docelowego ciągu. Poniższy program ilustruje to:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

String str = "to nie mów nigdy więcej.";
int i = str.find_first_of („uehyydew”);
Cout << i << endl;
powrót 0;

Wyjście to 7.

Co jeśli sekwencja znaków jest dłuższa niż ciąg docelowy? Rozważ następujący program:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

string str = "abcde";
int i = str.find_first_of („abcDefghijk”);
Cout << i << endl;
powrót 0;

Wyjście to 0. Wynika to z faktu, że ciąg docelowy jest w rzeczywistości pierwszą sekwencją znaków sekwencji (substring). A jeśli sekwencja była dłuższa niż ciąg docelowy i żaden charakter sekwencji nie istnieje w ciągu docelowego ciągu? Rozważ następujące:

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

string str = "abcde";
int i = str.find_first_of („FGHIJKLMNOP”);
Cout << i << endl;
powrót 0;

Dane wyjściowe wynosi -1, wciąż zgodne z faktem, że jeśli sekwencja nie zostanie znaleziona w ciągu docelowego, wówczas wartość zwracania funkcji wynosi -1.

Wniosek

find_first_of () jest funkcją członkowską klasy stringowej. Zwraca wskaźnik pierwszego wystąpienia sekwencji znaków znalezionych w ciągu docelowego ciągu. Liczenie indeksu zaczyna się od 0. Tę sekwencję można nazwać sub-drestringiem. Jeśli nie znaleziono sekwencji, -1 jest zwracane. find_first_of () Funkcja członka jest przeciążona na pięć sposobów. Różne przeciążone funkcje przyjmują różne formaty sekwencji znaków. W przypadku wszystkich tych przeciążonych funkcji wyszukiwanie od 0 jest domyślne. Jednak każdy ma argument, który może umożliwić rozpoczęcie wyszukiwania z dowolnego indeksu z przodu.