Fantastiskt!
Completion betyg förbättrat till 4.35single
Utmaning: Sökning Inom Strängar
Svep för att visa menyn
Metod find()
Ibland kan det vara nödvändigt att söka efter specifik text i en string. Detta kan göras med hjälp av metoderna .find() eller .rfind(). Vi börjar med metoden .find().
find.h
1str.find("text to find")
Returnerar index för första tecknet i första träffen.
main.cpp
1234567#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; // (code)codefinity }
Du kan också ange positionen för det första tecknet i strängen som ska beaktas vid sökningen. Detta görs med argumentet pos. Alla tecken före indexet pos ignoreras vid en sökning.
Här är ett exempel på att hitta första "code" med start från det tredje tecknet.
main.cpp
1234567#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code", 3) << std::endl; // __de(code)finity }
Metod rfind()
Det går även att hitta sista förekomsten av en text med metoden .rfind().
rfind.h
1str.rfind("text to find")
Medan .find() hämtar första förekomsten av text, hittar .rfind() sista förekomsten och står för reverse find.
main.cpp
12345678#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.find("code") << std::endl; std::cout << str.rfind("code") << std::endl; }
När .find() eller .rfind() inte kan hitta delsträngen returnerar de string::npos. Detta är en numerisk konstant som representerar en ogiltig position. Den lagras som det största möjliga värdet för size_t, vilket gör det enkelt att upptäcka misslyckade sökningar.
main.cpp
12345678#include <iostream> int main() { std::string str = "codecodefinity"; std::cout << str.rfind("abc") << std::endl; std::cout << std::string::npos << std::endl; }
Swipe to start coding
Du bygger ett enkelt e-postfilter. Målet är att tillåta användare att registrera sig med valfri e-postadress och markera e-postadresser från codefinity.com som tillåtna.
Funktionen isAllowedEmail tar en email som en string.
- Använd
rfind()för att hitta den sista'@'-symbolen i e-postadressen. - Jämför resultatet från
rfindmed-1för att kontrollera om'@'-symbolen finns. Om ingen'@'hittas, returnerafalseeftersom e-postadressen är ogiltig. - Initiera en strängvariabel
domainsom en tom sträng. - Använd en
for-loop som börjar frånatPos + 1upp till längden avemailför att iterera över tecknen efter'@'. - Vid varje iteration, lägg till tecknet i variabeln
domain. - Om
domainär lika med"codefinity.com", returneratrue. Annars returnerafalse.
Lösning
Tack för dina kommentarer!
single
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal