Video: Parser and Lexer — How to Create a Compiler part 1/5 — Converting text into an Abstract Syntax Tree 2024
Många C ++ -program som börjar läsas från cin-inmatningsobjektet och matas ut via cout-utgångsobjektet. Kanske har du inte tänkt på det mycket, men denna inmatnings- / utmatningsteknik är en delmängd av vad som kallas ström I / O.
Ström I / O är för stort ett ämne som ska täckas helt i några enkla artiklar - hela böckerna ägnas åt det här ämnet. Lyckligtvis finns det inte så mycket som du behöver veta om ström I / O för att skriva de allra flesta programmen.
Ström I / O baseras på överbelastade versioner av operatör >> () och operatör << () . Deklarationen av dessa överbelastade operatörer finns i filen iostream. Koden för dessa funktioner ingår i standardbiblioteket, som ditt C ++-program länkar till.
Följande kod visar bara några av prototyperna som visas i iostream :
// för inmatning har vi: istream & operator >> (istream & source, char * pDest); istream & operator >> (istream & source, string & sDest); istream & operator >> (istream & source, int & dest); istream & operator >> (istream & source, double & dest); // … och så vidare … // för produktion vi har: ostream & operator << (ostream & dest, char * pSource); ostream & operator << (ostream & dest, string & sDest); ostream & operator << (ostream & dest, int-källa); ostream & operator << (ostream & dest, dubbelkälla); // … och så går det …
När överbelastad för att utföra I / O, är operatören >> () kallad extractor och operatören << () kallas inserter. Klassen istream är grundklassen för inmatning från en fil eller en enhet som tangentbordet. C ++ öppnar istream object cin när programmet startar. På samma sätt är ostream utgångspunkten för produktion.
Prototyperna ovan är för insättare och extraktorer för pekare till nollställda teckensträngar (som "Mitt namn"), för strängobjekt, för ints och för dubblar.