Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Desafío: Acceso y Manipulación de Elementos de Cadenas | Tipo de Dato de Texto
Tipos de Datos en C++

bookDesafío: Acceso y Manipulación de Elementos de Cadenas

Indexación de una cadena

Podemos acceder a los elementos de un string (que son esencialmente caracteres char) utilizando la indexación con corchetes [], de manera similar a los arreglos. Esto también nos permite reemplazar un carácter en una posición específica.

indexing.h

indexing.h

copy
12
string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
Note
Nota

La indexación en un string comienza desde cero, al igual que en los arreglos.

La longitud de la cadena

Con ese indexado, es posible intentar acceder a un índice incorrecto (fuera de rango), y el compilador no notificará nada al respecto.

main.cpp

main.cpp

copy
1234567
#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word[12]; // Word's length is 10 }

Como se puede observar, la salida es inesperada y C++ no proporciona una advertencia sobre el problema. Para evitar esto, se puede utilizar el método .length() para determinar la longitud de un string y asegurar que el índice esté dentro del rango válido.

main.cpp

main.cpp

copy
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 }

Indexación usando el método

Otra forma de indexar es utilizando el método .at(). Para obtener el carácter con el índice n, se puede usar la siguiente sintaxis:

at.h

at.h

copy
1
str.at(n);

Funciona igual que str[n], pero generará un error si se especifica un índice fuera de rango.

main.cpp

main.cpp

copy
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 }

Práctica

Como se mencionó anteriormente, podemos reemplazar los caracteres dentro de una cadena utilizando la indexación (tanto con [] como con .at()). Aquí tienes un ejemplo:

main.cpp

main.cpp

copy
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; }
Tarea

Swipe to start coding

Tienes una dirección de correo electrónico como una cadena de texto. Tu tarea es enmascarar la parte del nombre de usuario del correo para proteger la privacidad.

La función maskEmail recibe una cadena de texto que representa la dirección de correo electrónico.

  1. Dentro de maskEmail, utiliza el método find para localizar la posición del símbolo '@', que marca el final del nombre de usuario.
  2. Verifica si el nombre de usuario tiene más de 1 carácter. Si no es así, devuelve el correo sin cambios.
  3. Usa un bucle for para iterar desde el índice 1 hasta (pero sin incluir) la posición de '@'.
  4. Dentro del bucle, reemplaza cada carácter por '*' para enmascarar el nombre de usuario.
  5. Devuelve el correo modificado.

Solución

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 3
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

close

bookDesafío: Acceso y Manipulación de Elementos de Cadenas

Desliza para mostrar el menú

Indexación de una cadena

Podemos acceder a los elementos de un string (que son esencialmente caracteres char) utilizando la indexación con corchetes [], de manera similar a los arreglos. Esto también nos permite reemplazar un carácter en una posición específica.

indexing.h

indexing.h

copy
12
string str = "Cpdefinity"; // Cpdefinity str[1] = 'o'; // Codefinity
Note
Nota

La indexación en un string comienza desde cero, al igual que en los arreglos.

La longitud de la cadena

Con ese indexado, es posible intentar acceder a un índice incorrecto (fuera de rango), y el compilador no notificará nada al respecto.

main.cpp

main.cpp

copy
1234567
#include <iostream> int main() { std::string word = "Codefinity"; std::cout << word[12]; // Word's length is 10 }

Como se puede observar, la salida es inesperada y C++ no proporciona una advertencia sobre el problema. Para evitar esto, se puede utilizar el método .length() para determinar la longitud de un string y asegurar que el índice esté dentro del rango válido.

main.cpp

main.cpp

copy
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 }

Indexación usando el método

Otra forma de indexar es utilizando el método .at(). Para obtener el carácter con el índice n, se puede usar la siguiente sintaxis:

at.h

at.h

copy
1
str.at(n);

Funciona igual que str[n], pero generará un error si se especifica un índice fuera de rango.

main.cpp

main.cpp

copy
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 }

Práctica

Como se mencionó anteriormente, podemos reemplazar los caracteres dentro de una cadena utilizando la indexación (tanto con [] como con .at()). Aquí tienes un ejemplo:

main.cpp

main.cpp

copy
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; }
Tarea

Swipe to start coding

Tienes una dirección de correo electrónico como una cadena de texto. Tu tarea es enmascarar la parte del nombre de usuario del correo para proteger la privacidad.

La función maskEmail recibe una cadena de texto que representa la dirección de correo electrónico.

  1. Dentro de maskEmail, utiliza el método find para localizar la posición del símbolo '@', que marca el final del nombre de usuario.
  2. Verifica si el nombre de usuario tiene más de 1 carácter. Si no es así, devuelve el correo sin cambios.
  3. Usa un bucle for para iterar desde el índice 1 hasta (pero sin incluir) la posición de '@'.
  4. Dentro del bucle, reemplaza cada carácter por '*' para enmascarar el nombre de usuario.
  5. Devuelve el correo modificado.

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 3. Capítulo 3
single

single

some-alt