single
Завдання: Доступ і Маніпулювання Елементами Рядка
Свайпніть щоб показати меню
Індексування рядка
Можна отримати доступ до елементів string (які фактично є символами типу char) за допомогою індексування у квадратних дужках [], подібно до масивів. Це також дозволяє замінювати символ на певній позиції.
indexing.h
12string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
Індексування у string починається з нуля, як і у масивах.
Довжина рядка
Через таку індексацію можна спробувати звернутися до неправильного індексу (який виходить за межі діапазону), і компілятор не повідомить про цю помилку.
main.cpp
1234567#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word[12]; // Word's length is 10 }
Як видно, результат є неочікуваним, і C++ не попереджає про цю проблему. Щоб уникнути цього, можна використовувати метод .length() для визначення довжини string і переконатися, що індекс знаходиться у допустимому діапазоні.
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 }
Індексування за допомогою методу
Інший спосіб індексування — використання методу .at(). Щоб отримати символ з індексом n, можна використати наступний синтаксис:
at.h
1str.at(n);
Працює так само, як і str[n], але викликає помилку, якщо вказати індекс, що виходить за межі рядка.
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 }
Практика
Як вже зазначалося раніше, можна замінювати символи всередині рядка за допомогою індексації (як через [], так і через .at()). Ось приклад:
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
У вас є електронна адреса у вигляді рядка. Ваше завдання — замаскувати частину імені користувача для забезпечення конфіденційності.
Функція maskEmail приймає рядок, що представляє електронну адресу.
- Усередині
maskEmailвикористайте методfindдля визначення позиції символу'@', який позначає кінець імені користувача. - Перевірте, чи довжина імені користувача більша за 1 символ. Якщо ні — поверніть електронну адресу без змін.
- Використайте цикл
forдля ітерації від індексу 1 до (але не включаючи) позиції'@'. - Усередині циклу замініть кожен символ на
'*'для маскування імені користувача. - Поверніть змінений рядок електронної адреси.
Рішення
Дякуємо за ваш відгук!
single
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат