Gibt es eine Möglichkeit, einen ifstream
in einen istream
umzuwandeln? Ich habe eine Funktion namens getToken(istream* br)
, die eine istream
als Parameter akzeptiert, aber innerhalb meiner main()
ich eine ifstream
verwenden, um eine Datei zu lesen, und ich muss diese ifstream
verwenden, um getToken
aufrufen. Wie kann ich dieses Problem lösen?Wie kann ich einen ifstream in einen istream konvertieren?
-1
A
Antwort
4
Wie in den Kommentaren erwähnt, müssen Sie nichts Besonderes tun. Der Typ std::ifstream
erbt von std::istream
, so dass jede Funktion, die einen istream*
übernimmt, einen Zeiger auf einen ifstream
als Eingabe nehmen kann. Zum Beispiel:
string getToken(istream* stream) {
...
}
ifstream fileStream;
getToken(&fileStream);
Die Stream-Klassen wurden speziell entwickelt, um Operationen wie diese möglich zu machen.
Verwandte Themen
- 1. Convert ifstream in istream
- 2. ifstream-istream und Funktionsaufruf
- 3. Wie kann ich istringstream und ifstream einer istream-Variablen zuweisen?
- 4. Ein ifstream in iStream C++ kopieren 14
- 5. Wie kann ich einen Int in einen NSString konvertieren?
- 6. Wie kann ich einen Python-Urandom in einen String konvertieren?
- 7. Wie kann ich einen Zugriffsbericht in einen Crystal Report konvertieren?
- 8. Wie kann ich einen Vektor in einen Datensatz konvertieren?
- 9. Wie kann ich einen Textwert in einen numerischen Wert konvertieren?
- 10. Android Wie kann ich einen String in einen bearbeitbaren konvertieren
- 11. Wie kann ich einen Int in einen CString konvertieren?
- 12. Einen benutzerdefinierten istream-Manipulator erstellen
- 13. Ifstream-Eingabe in Vorlage konvertieren
- 14. Wie implementiere ich seekg() für einen benutzerdefinierten istream/streambuf?
- 15. Kann ich einen WPF-Seitenpfad in einen Klassennamen konvertieren
- 16. Ist es möglich, einen istream auf mehrere Leser zu verteilen?
- 17. Implementierung von istream für einen Zeichenpuffer?
- 18. Wie kann ich erweiterte ASCII in einen System.String konvertieren?
- 19. Wie kann ich einen einzelnen Zeichentyp in Großbuchstaben konvertieren?
- 20. Wie kann ich meine Konvertierungsfunktion in einen Lambda-Ausdruck konvertieren?
- 21. Wie kann ich ein Bundle in einen PersistableBundle konvertieren?
- 22. Wie kann ich ein Array in einen ListIterator konvertieren?
- 23. Wie kann ich einen FilePath in eine Datei konvertieren?
- 24. Wie kann ich Strings in einen HTML-Farbcode-Hash konvertieren?
- 25. Wie kann ich DataSet a in einen DataReader konvertieren?
- 26. Wie kann ich einen Vektor in ein Zellenfeld konvertieren?
- 27. Wie kann ich FBProfilePictureView in einen UIImage konvertieren?
- 28. Wie kann ich eine Zeichenfolge in einen TColor-Wert konvertieren?
- 29. Wie kann ich einen Pandas DataFrame in eine Liste konvertieren?
- 30. Wie kann ich einen String in int konvertieren?
Sie brauchen es nicht ist * bereits * ein 'ìstream' – Galik
' ifstream' ist abgeleitet von 'istream'. Du solltest es einfach an "getToken" weitergeben können. Was passiert, wenn Sie es versuchen? Zeigen Sie eine [mcve] –
Zusätzlich zu Galiks Kommentar, könnten Sie 'dynamic_cast' es, wenn Sie wirklich eine' istream & 'oder' istream * 'wollten. Aber es ist nicht notwendig und fügt zusätzlichen Overhead hinzu. Siehe auch [dynamic_cast und static_cast in C++] (https://stackoverflow.com/q/2253168/608639). – jww