C ++ String find_first_of

C ++ String find_first_of

In C ++ find_first_of, als betrifft eine Zielzeichenfolge. Eine bestimmte Unterstring kann mehr als einmal auftreten. Also der Job der find_first_of () Funktion ist das erste Auftreten dieser bestimmten Unterstring in der Zielzeichenfolge zu finden.

Betrachten Sie die Zeichenfolge,

"Es ist, dass nie wieder sagen."

Der erste Charakter, 'I' ist am Index Null. Das zweite, 't' ist am Index 1; Der dritte, der ein Raum ist, ist in Index 2; Das vierte 'I' ist in Index 3; usw. "Niemals" tritt zweimal in der Streicherwörtung vor. 'n' für das erste „nie“ tritt bei Index 11 auf. 'n' für das zweite „nie“ tritt in einem höheren Index auf. Das erste Ereignis von „Never“ beginnt also in Index 11.

Die obige Zeichenfolge muss die Liste eines String -Objekts sein, das aus einer String -Klasse erstellt wurde. Ein C ++ - Programm zur Verwendung der Funktion c ++ find_first_of () sollte mit:

#enthalten
#enthalten
Verwenden von Namespace STD;

Die String -Bibliothek ist enthalten. find_first_of () ist eine Mitgliedsfunktion der String -Klasse. Der gesamte Code für den Zeichenfolge für diesen Artikel erfolgt in der Funktion main ().

Es gibt fünf Varianten der find_first_of () Funktion. Wenn es mehr als eine Variante einer Funktion gibt, soll die Funktion überlastet werden. In diesem Artikel wird erläutert, wie die Überlastung verwendet wird find_first_of () Mitgliedsfunktionen.

size_type find_first_of (Diagramm C, size_type pos = 0)

Diese Funktion gibt den Index des ersten Auftretens eines bestimmten Zeichens (Unterstriche eines Zeichens) in der Zielzeichenfolge zurück. Der erste Parameter bezieht sich auf den Charakter. Der zweite Parameter zeigt an, dass die Suche mit Index 0 beginnt (Standard). Die Konstruktion (Instanziierung) des Ziel -String -Objekts kann sein:

String str = "Es ist, dass nie wieder sagen wird.";

Lassen Sie den Charakter suchen, sei 'n'. 'n' tritt mehr als einmal vor. In diesem Fall beträgt die zurückgegebene Position 11, da der erste 'n' in Index 11 ist.

Der folgende Code zeigt die Verwendung dieser Funktion, wobei das Argument für den ersten Parameter eine Kennung ist:

String str = "Es ist, dass nie wieder sagen wird.";
char ss = 'n';
int i = str.find_first_of (ss);
Cout << i << endl;

Die Ausgabe ist 11.

Der zweite Parameter, "size_type pos = 0" in der Funktion, bedeutet, dass die Suche von Null beginnt. Wenn die Suche nach dem ersten 'n' von einem Index beginnen würde, wäre der Index für das zweite 'n' zurückgegeben worden. Das folgende Programm veranschaulicht dies, da das erste Argument ein wörtlicher ist.

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

String str = "Es ist, dass nie wieder sagen wird.";
int i = str.find_first_of ('n', 17);
Cout << i << endl;
Rückkehr 0;

Die Ausgabe ist 21.

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

Diese Funktion gibt den Index für das erste Zeichen des ersten Auftretens einer bestimmten Unterstring (Abfolge von Zeichen) in der Zielzeichenfolge zurück. Der erste Parameter bezieht sich auf einen konstanten Zeiger der Zeichensequenz (Sub-String). Der zweite Parameter zeigt an, dass die Suche mit Index 0 beginnt (Standardeinstellung, wenn der Parameter fehlt). Die Ausgabe des folgenden Programms beträgt 11, wobei die Suche von Null beginnt:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

String str = "Es ist, dass nie wieder sagen wird.";
const char* ss = "nie";
int i = str.find_first_of (ss);
Cout << i << endl;
Rückkehr 0;

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

Diese Funktion gibt den Index für das erste Zeichen des ersten Auftretens einer bestimmten Unterstring (Abfolge von Zeichen) in der Zielzeichenfolge zurück. Der erste Parameter bezieht. Der zweite Parameter zeigt an, dass die Suche standardmäßig mit Index 0 beginnt. Die Ausgabe des folgenden Programms beträgt 11, wobei die Suche von Null beginnt:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

String str = "Es ist, dass nie wieder sagen wird.";
char ss [] = "nie";
int i = str.find_first_of (ss);
Cout << i << endl;
Rückkehr 0;

Die Ausgabe ist 11. Die Aussage,

char ss [] = "nie";
hätte auch sein können sein können,
char ss [] = 'n', 'e', ​​'v', 'e', ​​'r', '\ 0';

Beachten Sie den NUL -Charakter, '\ 0' und seine Position. Die buchstäbliche, 'n', 'e', ​​'v', 'e', ​​'r', '\ 0' können wie im folgenden Programm im Code anstelle des Kennungs -SS verwendet werden:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

String str = "Es ist, dass nie wieder sagen wird.";
int i = str.find_first_of ('n', 'e', ​​'v', 'e', ​​'r', '\ 0');
Cout << i << endl;
Rückkehr 0;

Die Ausgabe ist immer noch 11, wie es sollte.

size_type find_first_of (const Basic_string & str, SREI, size_type pos = 0)

Diese Funktion ähnelt dem obigen, aber das erste Argument ist ein String -Objekt, das aus der String -Klasse konstruiert ist. Im folgenden Programm ist das erste Argument die Kennung eines String -Objekts, das aus der String -Klasse erstellt wurde (die Suche beginnt von Null):

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

String str = "Es ist, dass nie wieder sagen wird.";
String ss = "Never";
int i = str.find_first_of (ss);
Cout << i << endl;
Rückkehr 0;

Die Ausgabe ist 11. Das Argument hätte die Saitenkonstruktion sein können, ich.e. String ("nie") wie in:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

String str = "Es ist, dass nie wieder sagen wird.";
int i = str.find_first_of (string ("nie"));
Cout << i << endl;
Rückkehr 0;

Die Ausgabe ist hier 11. Denken Sie daran, dass ein String -Objekt immer noch wie folgt konstruiert werden kann:

String ss = "Never";

Für diese Funktion kann das erste Argument wie im folgenden Programm immer noch ein String -Literal sein:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

String str = "Es ist, dass nie wieder sagen wird.";
int i = str.find_first_of ("nie");
Cout << i << endl;
Rückkehr 0;

Die Ausgabe ist 11.

size_type find_first_of (const chart* s, size_type pos, size_type n)

Diese Funktion ähnelt dem oben genannten. Wenn das dritte Argument kleiner oder gleich der Größe der Unterstring, aber größer als 0 ist, gibt die Funktion die erwartete Zahl zurück. Der folgende Code demonstriert die Verwendung des dritten Arguments:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

String str = "Es ist, dass nie wieder sagen wird.";
int i = str.find_first_of ("Never", 17, 4);
Cout << i << endl;
Rückkehr 0;

Die Ausgabe ist 21.

Sequenz nicht gefunden

Was ist, wenn der Unterstring nicht gefunden wird? Betrachten Sie das folgende Programm:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

String str = "Es ist, dass nie wieder sagen wird.";
int i = str.find_first_of ("bcdfu");
Cout << i << endl;
Rückkehr 0;

Die Ausgabe ist -1. Wenn die Sequenz (Sub -String) in der Zielzeichenfolge kein Zeichen hat, beträgt der Rückgabewert der Funktion -1. Wenn die Sequenz die leere Zeichenfolge ist, beträgt der Rückgabewert noch -1.

Betrachten Sie die Sequenz,

"Uehydyw"

Und die Zielzeichenfolge,

„Es ist, dass nie wieder sagen.”

'H' in der Unterstring ist das erste Zeichen in der Unterstring, das zuerst in der Zielzeichenfolge auftritt. Es tritt bei Index 7 in der Zielzeichenfolge auf.

Der Index, der aus der Zielzeichenfolge zurückgegeben wird, ist das erste Zeichen der Unterstring. Das folgende Programm zeigt dies:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

String str = "Es ist, dass nie wieder sagen wird.";
int i = str.find_first_of ("uehydyw");
Cout << i << endl;
Rückkehr 0;

Die Ausgabe ist 7.

Was ist, wenn die Abfolge von Zeichen länger ist als die Zielzeichenfolge? Betrachten Sie das folgende Programm:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

String str = "abcde";
int i = str.find_first_of ("abcdefghijk");
Cout << i << endl;
Rückkehr 0;

Die Ausgabe ist 0. Dies liegt daran, dass die Zielzeichenfolge tatsächlich die erste Reihenfolge der Zeichen der Sequenz ist (Sub-String). Und was wäre, wenn die Sequenz länger wäre als die Zielzeichenfolge und in der Zielzeichenfolge kein Zeichen der Sequenz vorhanden ist? Folgendes berücksichtigen:

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

String str = "abcde";
int i = str.find_first_of ("fghijklmnop");
Cout << i << endl;
Rückkehr 0;

Die Ausgabe ist -1, die immer noch mit der Tatsache entspricht, dass der Rückgabewert der Funktion -1, wenn die Sequenz nicht in der Zielzeichenfolge gefunden wird.

Abschluss

find_first_of () ist eine Mitgliedsfunktion der String -Klasse. Es gibt den Index des ersten Auftretens einer Abfolge von Zeichen zurück, die in einer Zielzeichenfolge gefunden werden. Indexzählung beginnt von 0. Diese Sequenz kann als Unterstring bezeichnet werden. Wenn keine Sequenz gefunden wird, wird -1 zurückgegeben. Der find_first_of () Die Mitgliedsfunktion wird auf fünf Arten überladen. Die unterschiedlichen überladenen Funktionen entnehmen unterschiedliche Zeichensequenzformate. Für all diese überlasteten Funktionen ist die Suche nach 0 der Standard zu suchen. Jedes hat jedoch ein Argument, mit dem die Suche aus einem beliebigen Index vor uns beginnen kann.