std::basic_string::at vs std::basic_string::operator[]

std::basic_string::at , std::basic_string::operator[]
Tanto at() como operator[] se pueden usar para acceder a un elemento en la string. Pero existe una diferencia entre ellos sobre cómo manejar condiciones excepcionales cuando pos>=size. 
 

  • std::basic_string::at arroja std::out_of_range si pos >= size() .
  • std::bsic_string::operator[] no arroja ninguna excepción y produce un resultado indefinido .

A continuación se muestra la implementación de C++ que muestra la propiedad de manejo de excepciones de std::basic_string::at – 
 

CPP

// C++ implementation of std::basic_string::at
#include <stdexcept>
#include <iostream>
 
int main()
{
    // Length = 13. Valid indices are from '0' to '12'
    std::string str = "Geeksforgeeks";
  
    // Accessing an out of bounds
    try
    {
        // Throwing an out_of_range exception
        std::cout << str.at(13) << "\n";
    }
     
    // Error caught
    catch (std::out_of_range const& error)
    {
        std::cout << "Exception caught" << "\n";
 
        // Printing the type of exception
        std::cout << error.what() << "\n";
    }
}

Producción: 
 

Exception caught
basic_string::at: __n (which is 13) >= this->size() (which is 13)

A continuación se muestra la implementación de C++ que muestra la comprobación sin límites en std::basic_string::operator[] – 
 

CPP

// C++ implementation of std::basic_string::operator[]
#include <stdexcept>
#include <iostream>
 
int main()
{
    // Length = 13. Valid indices are from '0' to '12'
    std::string str = "Geeksforgeeks";
  
    // Accessing an out of bounds
    try
    {
        //Throwing an out_of_range exception
        std::cout << str[13] << "\n";
    }
     
    // Error caught
    catch (std::out_of_range const& error)
    {
        std::cout << "Exception caught" << "\n";
        // Printing the type of exception
        std::cout << error.what() << "\n";
    }
}

Producción: 
 

Undefined result

Este artículo es una contribución de Rohit Thapliyal . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *