एक टोकन C++ प्रोग्राम का सबसे छोटा तत्व है जो कंपाइलर के लिए सार्थक है। C++ पार्सर इन प्रकार के टोकन्स को पहचानता है: आइडेंटिफायर्स, कीवर्ड्स, लिटरल्स, ऑपरेटर्स, पंक्चुएटर्स, और अन्य सेपरेटर्स। इन टोकन्स की एक स्ट्रीम एक ट्रांसलेशन यूनिट बनाती है। टोकन्स आमतौर पर व्हाइट स्पेस द्वारा अलग किए जाते हैं।
पार्सर कीवर्ड्स, आइडेंटिफायर्स, लिटरल्स, ऑपरेटर्स, और पंक्चुएटर्स को पहचानता है। प्रीप्रोसेसिंग टोकन्स (जैसे #include, #define, #if_def, आदि) प्रीप्रोसेसिंग चरणों में उपयोग किए जाते हैं ताकि कंपाइलर को पास की जाने वाली टोकन स्ट्रीम उत्पन्न की जा सके। प्रीप्रोसेसिंग टोकन श्रेणियां हेडर नाम, आइडेंटिफायर्स, प्रीप्रोसेसिंग नंबर्स, कैरेक्टर लिटरल्स, स्ट्रिंग लिटरल्स, आदि हैं जो अन्य श्रेणियों में से किसी से मेल नहीं खाते। कैरेक्टर और स्ट्रिंग लिटरल्स यूजर-डिफाइन्ड लिटरल्स हो सकते हैं। प्रीप्रोसेसिंग टोकन्स को व्हाइट स्पेस या कमेंट्स द्वारा अलग किया जा सकता है।
पार्सर इनपुट स्ट्रीम से टोकन्स को बाएं-से-दाएं स्कैन का उपयोग करके इनपुट कैरेक्टर्स का उपयोग करके सबसे लंबा संभव टोकन बनाकर अलग करता है।