Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur d'exécution C++ : « hors plage » ?

Comment résoudre l'erreur d'exécution C++ : « hors plage » ?

王林
王林original
2023-08-26 12:46:542117parcourir

如何解决C++运行时错误:'out of range'?

Comment résoudre l'erreur d'exécution C++ : « hors de portée » ?

En programmation C++, lorsque nous utilisons des structures de données telles que des tableaux, des conteneurs ou des chaînes, nous rencontrons souvent une erreur d'exécution courante, à savoir « hors de portée ». Cette erreur est généralement déclenchée par l'accès à un élément en dehors de la plage d'index valide. Dans cet article, nous aborderons quelques causes courantes et solutions pour vous aider à mieux comprendre et résoudre ce problème.

  1. Accès à des éléments au-delà de la portée d'un tableau ou d'un conteneur
    C'est l'une des causes les plus courantes d'erreurs « hors de portée ». Lorsque nous utilisons un tableau, un conteneur ou une chaîne, si l'index accédé dépasse sa plage valide, cette erreur sera déclenchée. Voici un exemple :
#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {1, 2, 3};

    // 错误示例:访问超过容器范围的索引
    int index = 3;
    std::cout << numbers[index] << std::endl;

    return 0;
}

Dans l'exemple ci-dessus, nous avons défini un conteneur vectoriel avec 3 éléments puis avons essayé d'accéder à l'élément d'index 3. Étant donné que le conteneur ne contient que 3 éléments, la plage d'index valide est comprise entre 0 et 2. Par conséquent, l'accès à l'élément avec l'index 3 dépasse la plage valide et déclenchera une erreur « hors plage ».

Pour éviter cette erreur, nous devons toujours nous assurer que l'index se situe dans la plage valide. Vous pouvez vérifier si l'index est valide en utilisant un jugement conditionnel ou utiliser un itérateur pour parcourir les éléments du conteneur.

  1. Erreur de calcul de l'indice
    Une autre erreur courante consiste à faire une erreur lors du calcul de l'indice. Par exemple, si nous utilisons une mauvaise méthode de calcul d'index lors de l'itération ou de l'exécution d'une boucle, cela provoquera une erreur « hors plage ».
#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {1, 2, 3};

    // 错误示例:索引计算错误
    for(int i = 0; i <= numbers.size(); i++) {
        std::cout << numbers[i] << std::endl;
    }

    return 0;
}

Dans l'exemple ci-dessus, nous avons utilisé une mauvaise façon de calculer l'indice. Dans la boucle, nous utilisons la condition i <=numbers.size() pour déterminer si la boucle continue de s'exécuter. Puisque l'index commence à compter à partir de 0 et que numbers.size() renvoie le nombre d'éléments, la condition doit être i <numbers.size(). i <= numbers.size()的条件来判断循环是否继续执行。由于索引是从0开始计数的,而numbers.size()返回的是元素的个数,因此条件应该是i < numbers.size()

为了避免这种错误,我们应该仔细检查索引计算的方式,确保计算结果是正确的,不超过有效范围。

  1. 字符串操作错误
    当我们使用C++中的字符串类string时,也可能遇到'out of range'错误。这通常是由于字符串操作函数的使用错误导致的。
#include <iostream>
#include <string>

int main() {
    std::string str = "Hello";

    // 错误示例:字符串操作错误
    std::cout << str.substr(0, 10) << std::endl;

    return 0;
}

在上面的示例中,我们使用了字符串的substr()函数来获取一个子串。但是,我们的截取范围超过了原始字符串的长度,将触发'out of range'错误。

为了避免这种错误,我们应该始终确保字符串操作的参数在正确的范围内。可以使用length()

Afin d'éviter cette erreur, nous devons vérifier soigneusement la façon dont l'indice est calculé pour nous assurer que le résultat du calcul est correct et ne dépasse pas la plage valide.

    Erreur d'opération de chaîne🎜Lorsque nous utilisons la chaîne de classe string en C++, nous pouvons également rencontrer l'erreur « hors de portée ». Ceci est généralement dû à une utilisation incorrecte des fonctions de manipulation de chaînes. 🎜🎜rrreee🎜Dans l'exemple ci-dessus, nous avons utilisé la fonction substr() de string pour obtenir une sous-chaîne. Cependant, notre plage d'interception dépasse la longueur de la chaîne d'origine et déclenchera une erreur « hors de portée ». 🎜🎜Pour éviter cette erreur, nous devons toujours nous assurer que les paramètres des opérations sur les chaînes sont dans la plage correcte. Vous pouvez utiliser la fonction length() pour obtenir la longueur de la chaîne, puis effectuer les opérations correspondantes. 🎜🎜Lors du dépannage des erreurs « hors plage », la chose la plus importante est de revérifier votre code pour vous assurer que les calculs et les opérations d'index se situent dans une plage valide. De plus, l’utilisation d’outils et de techniques de débogage constitue également un moyen efficace de rechercher et de localiser les problèmes. En comprenant ces causes d'erreur courantes et leurs solutions, nous pouvons mieux éviter et résoudre les erreurs « hors de portée » en C++ et améliorer la stabilité et la fiabilité du programme. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn