विषय पर बढ़ें

अंतिम अद्यतन:2026-10-12

C++ ट्राइग्राफ

C++那些事: ट्राइग्राफ का विलोपन

C++17 से पहले, Trigraph ISO/IEC 646 जैसे छोटे कैरेक्टर कोड में प्रोग्राम लिखने की सुविधा थी, जो C89 में पेश हुई। ISO/IEC 646 में C द्वारा उपयोग किए जाने वाले निम्नलिखित कैरेक्टर अनुपस्थित थे, इसलिए ?? का उपयोग करके निम्नलिखित कैरेक्टर्स को एस्केप (escape) किया जाता है:

ट्राइग्राफ सामग्री प्रतिस्थापित सामग्री
??= #
??( [
??) ]
??< {
??> }
??/ \
??! |
??- ~
??' ^

\? को ट्राइग्राफ तालिका द्वारा प्रतिस्थापित होने से बचाने के लिए एस्केप किया जाता है।

C++17 में ट्राइग्राफ हटा दिए गए, ??= आदि अब प्रतिस्थापित नहीं होते।

उदाहरण

C++17 से पहले:

std::cout << "??=" << std::endl;
std::cout << "??(" << std::endl;
std::cout << "?\?(" << std::endl;

आउटपुट:

#
[
??(

C++17 तथा उसके बाद:

??=
??(
??(

अब संभवतः Unicode जैसे कैरेक्टर एनकोडिंग सर्वव्यापक हो चुके हैं, इसलिए ट्राइग्राफ समूह की आवश्यकता नहीं रही, और gcc जैसे कंपाइलर डिफ़ॉल्ट रूप से ट्राइग्राफ अक्षम रखते हैं।

संबंधित विषय

टिप्पणियाँ