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