2011-12-02 15 views
7

मैंने पहले से ही एएनएसआई एस्केप कोड देखे हैं, लेकिन ऐसा लगता है कि केवल रेखांकन ही समर्थित है।क्या स्ट्राइक-थ्रू प्रभाव के साथ कंसोल में टेक्स्ट प्रदर्शित करना संभव है?

क्या मुझे कुछ याद आती है या कोई दूसरा विकल्प है?

यदि यह संभव नहीं है, तो "यह बहिष्कृत" के अर्थ में कुछ समतुल्य है?

उत्तर

12

टर्मिनल के लिए ECMA-48 मानक के अनुसार, एसजीआर (ग्राफिक रेंडिशन का चयन करें) कोड संख्या 9 को क्रॉस-आउट टेक्स्ट सक्षम करना माना जाता है। हालांकि, ANSI escape code विकिपीडिया पेज कहता है कि यह व्यापक रूप से समर्थित नहीं है, और मुझे ऐसा करने के बारे में पता नहीं है। मुझे संदेह होगा कि ऐसा इसलिए है क्योंकि डीईसी की वीटीxxएक्स श्रृंखला didn't support it

+0

मेरा 'libvterm'/'pangoterm' यह ठीक कर सकता है। [लिंक] में दूसरा स्क्रीनशॉट देखें (http://leonerds-code.blogspot.com/2011/09/libvtermpangoterm-and-tickit.html) – LeoNerd

+3

वास्तव में प्रमुख शेल टर्मिनल का एक अच्छा सेट इसका समर्थन करता है (इसमें शामिल है 'guake'',' टर्मिनेटर ',' gnome-terminal'', ...)। http://misc.flogisoft.com/bash/tip_colors_and_formatting#terminals_compatibility। त्वरित परीक्षण: 'echo -e" \ e [9mtest \ e [0m "' '। – vaab

4

सी 11 या सी ++ 11 में लिखे गए अनुप्रयोगों के लिए एक वैकल्पिक समाधान यूनिकोड combining long stroke overlay वर्ण का उपयोग करना है।

#include <iostream> 
#include <string> 

std::string strikethrough(const std::string& text) { 
    std::string result; 
    for (auto ch : text) { 
    result.append(u8"\u0336"); 
    result.push_back(ch); 
    } 
    return result; 
} 

int main() { 
    std::cout << strikethrough("strikethrough") << std::endl; 
} 

कोड स्ट्रोक ओवरले \u0336 साथ इनपुट text में प्रत्येक चरित्र के प्रारंभिक भाग:

सी ++ 11 में आप इस तरह कोड कुछ लिख सकते हैं। ध्यान दें कि फ़ंक्शन मानता है कि text एएससीआईआई या लैटिन जैसे सिंगलबाइट एन्कोडिंग में एन्कोड किया गया है। यदि इनपुट यूटीएफ -8 में है तो इसे वर्ण सीमाएं प्राप्त करने के लिए पहले यूटीएफ -32 में परिवर्तित किया जाना चाहिए।

आउटपुट तब यूटीएफ -8 सक्षम टर्मिनल में s̶t̶r̶i̶k̶e̶t̶h̶r̶o̶u̶g̶h है। मुझे नहीं पता कि पहले चरित्र में कोई स्ट्राइक-थ्रू क्यों नहीं है, एक टर्मिनल मुद्दा होना चाहिए। मैं स्ट्राइकथ्रू फ़ंक्शन कॉल से कम से कम एक चरित्र को प्रिंट करके इस पर काम कर सकता हूं।

यूनिकोड समाधान भी मेरी टर्मिनल (terminator) एएनएसआई एस्केप अनुक्रम ऊपर उल्लेख किया है की तुलना में एक अलग ताला उत्पन्न करता है। पूर्व पाठ के बीच में रेखा को बिल्कुल प्रस्तुत करता है जबकि बाद वाला इसे थोड़ा नीचे प्रस्तुत करता है।

संबंधित मुद्दे