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?
Antwort
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.
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? –
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.
- 1. Cygwin g ++ std :: stoi „Fehler: 'stoi' ist kein Mitglied von‚std
- 2. Wie wird sort für std :: deque implementiert?
- 3. Wie wird `new (std :: nothrow)` implementiert?
- 4. Wie std :: unordered_map implementiert
- 5. Warum wird std :: find so implementiert?
- 6. Wie ist std :: has_virtual_destructor implementiert?
- 7. Generische Funktion für eine Familie verwandter Funktionen (zB std :: stoi, std :: stof, std :: stod usw.)
- 8. Wie erstellt man eine std :: -Funktion als Methode Argument mit Std :: Stoi als Standardwert?
- 9. Wie wird std :: is_constructible <T, Args> implementiert?
- 10. Probleme mit stoi
- 11. Wie könnte std :: experimental :: source_location implementiert werden?
- 12. Warum werden std :: stoi und std :: array nicht mit g ++ C++ 11 kompiliert?
- 13. Wie wird OpenID implementiert?
- 14. Wie wird __RTC_CheckEsp implementiert?
- 15. Wie wird set() implementiert?
- 16. Wie wird pthread_join implementiert?
- 17. Wie wird `class.name` implementiert
- 18. Wie wird Serializable implementiert?
- 19. Wie wird @private implementiert?
- 20. Stoi und Debugging mit valgrind und gdb
- 21. Sonderbarer Fehler im Zusammenhang mit stoi?
- 22. Wie wird die Abhängigkeitseigenschaft implementiert?
- 23. Wie wird python's bruchs.limit_denominator implementiert?
- 24. Wie wird die Laufzeitlizenzierung implementiert?
- 25. Wie wird neo4j Persistenz implementiert?
- 26. Wie wird Chat normalerweise implementiert?
- 27. Wie wird das Spezifikationsmuster implementiert?
- 28. Wie wird Referenz intern implementiert?
- 29. Wie wird Azure Storage implementiert?
- 30. Kann nicht aus Zeichenfolge konvertieren mit stoi
[Es ruft 'std :: strtol'] (http://en.cppreference.com/w/cpp/string/basic_string/stol). –
Sie können die Datei von Ihrem bevorzugten Open-Source-Compiler öffnen und sehen. – NathanOliver
http://en.cppreference.com/w/cpp/string/basic_string/stol "... ruft std :: strtol() ..." –