Fantastiskt!
Completion betyg förbättrat till 4.35single
Utmaning: Åtkomst till och Manipulering av Strängelement
Svep för att visa menyn
Indexering av en sträng
Vi kan komma åt elementen i en string (som i grunden är char-tecken) med hjälp av hakparenteser [] för indexering, liknande som för arrayer. Detta gör det också möjligt att ersätta ett tecken på en specifik position.
indexing.h
12string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
Indexeringen i en string börjar från noll, precis som i arrayer.
Strängens längd
Med denna indexering kan du försöka komma åt ett felaktigt index (utanför intervallet), och kompilatorn kommer inte att varna dig om detta.
main.cpp
1234567#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word[12]; // Word's length is 10 }
Som du kan se är utdata oväntad, och C++ ger ingen varning om problemet. För att undvika detta kan du använda metoden .length() för att bestämma längden på en string och säkerställa att indexet är inom giltigt intervall.
main.cpp
123456789101112#include <iostream> int main() { std::string word = "Codefinity"; int index = 12; if (index >= word.length()) std::cout << "The output is unexpected!" << std::endl; else std::cout << word[index]; // Word's length is 10 }
Indexering med metod
Ett annat sätt att indexera är att använda metoden .at(). För att hämta tecknet med index n kan vi använda följande syntax:
at.h
1str.at(n);
Det fungerar på samma sätt som str[n] men kommer att ge ett felmeddelande om du anger ett index som är utanför intervallet.
main.cpp
12345678#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word.at(12); // word's length is 10 // Try outputting the character with the index 5 }
Övning
Som nämnts tidigare kan vi ersätta tecken i en sträng med hjälp av indexering (både med [] och .at()). Här är ett exempel:
main.cpp
123456789#include <iostream> int main() { std::string word = "Cpdefinitu"; word[1] = 'o'; word.at(word.length() - 1) = 'y'; // length - 1 accesses the last element std::cout << word; }
Swipe to start coding
Du har en e-postadress som en sträng. Din uppgift är att maskera användarnamnsdelen av e-postadressen för att skydda integriteten.
Funktionen maskEmail tar en sträng som representerar e-postadressen.
- Inuti
maskEmail, använd metodenfindför att hitta positionen för'@'-symbolen, som markerar slutet på användarnamnet. - Kontrollera om användarnamnet är längre än 1 tecken. Om inte, returnera e-postadressen oförändrad.
- Använd en
for-loop för att iterera från index 1 upp till (men inte inklusive) positionen för'@'. - Inuti loopen, ersätt varje tecken med
'*'för att maskera användarnamnet. - Returnera den modifierade e-postadressen.
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