2017-02-21 5 views
-1

Die meisten alltäglichen Anwendungsfälle wurden bereits in eine Funktion umgewandelt, die in der Standardbibliothek verfügbar ist. Ich würde jedoch gerne wissen, wie einige von ihnen hinter den Kulissen arbeiten. Wie ist der eigentliche Code hinter std::stoi?Wie wird std :: stoi implementiert?

+2

[Es ruft 'std :: strtol'] (http://en.cppreference.com/w/cpp/string/basic_string/stol). –

+1

Sie können die Datei von Ihrem bevorzugten Open-Source-Compiler öffnen und sehen. – NathanOliver

+1

http://en.cppreference.com/w/cpp/string/basic_string/stol "... ruft std :: strtol() ..." –

Antwort

3

Die einfachste Möglichkeit ist es, die entsprechende C-Funktion aufzurufen, in diesem Fall strtol, zu überprüfen, was passiert ist, und geeignete Ausnahmen auszulösen, falls es fehlschlägt, und das Ergebnis zurückgeben.

+1

Ich denke, das beantwortet die Frage nicht. Das OP fragt "was ist der eigentliche Code hinter std :: stoi", aber stoi ist nur ein Beispiel. Wie wussten Sie, dass strtol Teil der Implementierung von std :: stoi ist? Wie hilft das dem OP, den Code hinter std :: stof() zu finden? –

1

Ich würde gerne wissen, wie einige von ihnen hinter den Kulissen arbeiten. Wie ist das der eigentliche Code hinter Std :: Stoi?

Ich glaube, Sie den 'tatsächlichen' Code durch eine Suche ähnlich zu finden:

  • Unter Ubuntu schafft meine Make-Datei ein .depends Datei mit:

    g ++ - 5 - m64 -O3 -ggdb -std = C++ 14 -Wall -Wextra -Wshadow -Wnon- virtual-dtor -pedantisch -Wcast-align -Wcast-qual -Weconversion -Wointer-arith -Wunused -Woverloaded-virtual -O0 -M * .cc> .depends

    (Ich versuche, die Compiler-Optionen für diesen Befehl zu halten meine normale Kompilierung übereinstimmen.)

  • in einem Browser, ich sehe

    http://en.cppreference.com/w/cpp/string/basic_string/stol

    dass

    std :: stoi zu identifizieren ist von std :: basic_string (am Anfang der Seite)

  • In meinem Editor, (oder) mit grep, ich suche durch die Datei .depends für "basic_string"

    grep --color -nH- "basic_string" .depends

    grep die Zeichenfolge 214 mal in meinem aktuellen Berichten Datei abhängt, den ändert die Größe, wenn ich Code ändern.

    Beispiel für einen Bericht:

    .depends: 14105: /usr/include/c++/5/bits/basic_string.h \

  • In meinem Lektor, ich öffne die angegebene Datei

    "/usr/include/c++/5/bits/basic_string.h",

    Dann suchen Sie nach "stoi", das nur zweimal zu existieren scheint.

    Dies zeigt v5 des Compilers an.

Ich denke, Sie sollten in der Lage sein, eine ähnliche Suche auf Ihrem System zu tun.

Viel Glück.

Verwandte Themen