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.
#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.
#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()
。
为了避免这种错误,我们应该仔细检查索引计算的方式,确保计算结果是正确的,不超过有效范围。
#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()
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!