Heim > Backend-Entwicklung > C++ > Hauptteil

Wie behebt man den C++-Laufzeitfehler: „Außerhalb des zulässigen Bereichs'?

王林
Freigeben: 2023-08-26 12:46:54
Original
2017 Leute haben es durchsucht

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

Wie behebt man den C++-Laufzeitfehler: „Außerhalb des zulässigen Bereichs“?

Bei der C++-Programmierung stoßen wir bei der Verwendung von Datenstrukturen wie Arrays, Containern oder Strings häufig auf einen häufigen Laufzeitfehler, nämlich „Out of Range“. Dieser Fehler wird normalerweise durch den Zugriff auf ein Element außerhalb des gültigen Indexbereichs ausgelöst. In diesem Artikel behandeln wir einige häufige Ursachen und Lösungen, damit Sie dieses Problem besser verstehen und beheben können.

  1. Zugriff auf Elemente außerhalb des Bereichs eines Arrays oder Containers
    Dies ist eine der häufigsten Ursachen für „Außerhalb des Bereichs“-Fehlers. Wenn wir ein Array, einen Container oder eine Zeichenfolge verwenden und der Index, auf den zugegriffen wird, seinen gültigen Bereich überschreitet, wird dieser Fehler ausgelöst. Hier ist ein Beispiel:
#include <iostream>
#include <vector>

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

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

    return 0;
}
Nach dem Login kopieren

Im obigen Beispiel haben wir einen Vektorcontainer mit 3 Elementen definiert und dann versucht, auf das Element mit Index 3 zuzugreifen. Da der Container nur 3 Elemente enthält, liegt der gültige Indexbereich zwischen 0 und 2. Der Zugriff auf das Element mit Index 3 überschreitet also den gültigen Bereich und löst einen Fehler „Außerhalb des Bereichs“ aus.

Um diesen Fehler zu vermeiden, sollten wir immer sicherstellen, dass der Index innerhalb des gültigen Bereichs liegt. Sie können mithilfe einer bedingten Beurteilung überprüfen, ob der Index gültig ist, oder einen Iterator verwenden, um die Containerelemente zu durchlaufen.

  1. Fehler bei der Indexberechnung
    Ein weiterer häufiger Fehler besteht darin, bei der Indexberechnung einen Fehler zu machen. Wenn wir beispielsweise beim Iterieren oder Ausführen einer Schleife die falsche Indexberechnungsmethode verwenden, führt dies zu einem Fehler „Außerhalb des Bereichs“.
#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;
}
Nach dem Login kopieren

Im obigen Beispiel haben wir den Index falsch berechnet. In der Schleife verwenden wir die Bedingung von i <= zahlen.size(), um zu bestimmen, ob die Schleife weiterhin ausgeführt wird. Da der Index bei 0 beginnt und numbers.size() die Anzahl der Elemente zurückgibt, sollte die Bedingung i < zahlen.size() lauten. 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;
}
Nach dem Login kopieren

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

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

Um diesen Fehler zu vermeiden, sollten wir die Art und Weise der Indexberechnung sorgfältig prüfen, um sicherzustellen, dass das Berechnungsergebnis korrekt ist und den gültigen Bereich nicht überschreitet.

    String-Operationsfehler🎜Wenn wir die String-Klasse string in C++ verwenden, kann es auch zu dem Fehler „Außerhalb des Bereichs“ kommen. Dies wird normalerweise durch die falsche Verwendung von String-Manipulationsfunktionen verursacht. 🎜🎜rrreee🎜Im obigen Beispiel haben wir die Funktion substr() von string verwendet, um einen Teilstring zu erhalten. Unser Abfangbereich überschreitet jedoch die Länge der ursprünglichen Zeichenfolge und löst einen Fehler „Außerhalb des Bereichs“ aus. 🎜🎜Um diesen Fehler zu vermeiden, sollten wir immer sicherstellen, dass die Parameter von String-Operationen im richtigen Bereich liegen. Sie können die Funktion length() verwenden, um die Länge der Zeichenfolge abzurufen und dann entsprechende Operationen auszuführen. 🎜🎜Bei der Fehlerbehebung bei „Außerhalb des Bereichs“-Fehlern ist es am wichtigsten, Ihren Code noch einmal zu überprüfen, um sicherzustellen, dass sowohl Indexberechnungen als auch Operationen innerhalb eines gültigen Bereichs liegen. Darüber hinaus ist die Verwendung von Debugging-Tools und -Techniken auch eine effektive Möglichkeit, Probleme zu finden und zu lokalisieren. Durch das Verständnis dieser häufigen Fehlerursachen und -lösungen können wir Fehler außerhalb des zulässigen Bereichs in C++ besser vermeiden und beheben und die Stabilität und Zuverlässigkeit des Programms verbessern. 🎜

Das obige ist der detaillierte Inhalt vonWie behebt man den C++-Laufzeitfehler: „Außerhalb des zulässigen Bereichs'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!