सी 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
) एएनएसआई एस्केप अनुक्रम ऊपर उल्लेख किया है की तुलना में एक अलग ताला उत्पन्न करता है। पूर्व पाठ के बीच में रेखा को बिल्कुल प्रस्तुत करता है जबकि बाद वाला इसे थोड़ा नीचे प्रस्तुत करता है।
स्रोत
2015-10-15 17:04:33
मेरा 'libvterm'/'pangoterm' यह ठीक कर सकता है। [लिंक] में दूसरा स्क्रीनशॉट देखें (http://leonerds-code.blogspot.com/2011/09/libvtermpangoterm-and-tickit.html) – LeoNerd
वास्तव में प्रमुख शेल टर्मिनल का एक अच्छा सेट इसका समर्थन करता है (इसमें शामिल है 'guake'',' टर्मिनेटर ',' gnome-terminal'', ...)। http://misc.flogisoft.com/bash/tip_colors_and_formatting#terminals_compatibility। त्वरित परीक्षण: 'echo -e" \ e [9mtest \ e [0m "' '। – vaab