अंतिम अद्यतन:2026-10-12
C++ ट्राइग्राफ¶
C++那些事: ट्राइग्राफ का विलोपन¶
C++17 से पहले, Trigraph ISO/IEC 646 जैसे छोटे कैरेक्टर कोड में प्रोग्राम लिखने की सुविधा थी, जो C89 में पेश हुई। ISO/IEC 646 में C द्वारा उपयोग किए जाने वाले निम्नलिखित कैरेक्टर अनुपस्थित थे, इसलिए ?? का उपयोग करके निम्नलिखित कैरेक्टर्स को एस्केप (escape) किया जाता है:
| ट्राइग्राफ सामग्री | प्रतिस्थापित सामग्री |
|---|---|
??= |
# |
??( |
[ |
??) |
] |
??< |
{ |
??> |
} |
??/ |
\ |
??! |
| |
??- |
~ |
??' |
^ |
\? को ट्राइग्राफ तालिका द्वारा प्रतिस्थापित होने से बचाने के लिए एस्केप किया जाता है।
C++17 में ट्राइग्राफ हटा दिए गए, ??= आदि अब प्रतिस्थापित नहीं होते।
उदाहरण¶
C++17 से पहले:
आउटपुट:
C++17 तथा उसके बाद:
अब संभवतः Unicode जैसे कैरेक्टर एनकोडिंग सर्वव्यापक हो चुके हैं, इसलिए ट्राइग्राफ समूह की आवश्यकता नहीं रही, और gcc जैसे कंपाइलर डिफ़ॉल्ट रूप से ट्राइग्राफ अक्षम रखते हैं।
संबंधित विषय¶
- C++ डिफ़ॉल्ट कंस्ट्रक्टर से बचना | C++那些事
- C++ क्लास इनिशियलाइज़र लिस्ट इडियम | C++那些事
- C++ में फ़ंक्शन टेम्पलेट की जगह क्लास टेम्पलेट | C++那些事
- C++ copy-and-swap इडियम | C++那些事
- C++ डिपेंडेंसी इंजेक्शन | C++那些事
- C++ enum class स्ट्रॉन्ग टाइप्ड एनम | C++那些事
- C++ Header-Only तथा कार्यान्वयन का पृथक्करण | C++那些事
- C++ लेज़ी इवैल्यूएशन इडियम | C++那些事
- C++ लुकअप टेबल इडियम | C++那些事
- C++ मेंबर पॉइंटर तथा टाइप जानकारी | C++那些事