{"id":3437,"date":"2019-05-16T17:31:42","date_gmt":"2019-05-16T15:31:42","guid":{"rendered":"https:\/\/mariusbancila.ro\/blog\/?p=3437"},"modified":"2022-09-15T20:43:40","modified_gmt":"2022-09-15T18:43:40","slug":"cpp-is-fun","status":"publish","type":"post","link":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/","title":{"rendered":"C++ is fun"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">We all know C++ is a powerful yet complex programming language. But it can also be fun. For instance, you can use emojis and other Unicode characters in the source code. Of course, nobody sane would use emojis for identifiers. But it&#8217;s possible and you can have a little fun if have some spare time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Identifiers are sequences of digits, underscores, lowercase and upper case Latin letters, and most Unicode characters. Identifiers are not allowed to begin with a digit, they must begin with an underscore, a Latin letter, or a non-digit Unicode character. For more information about the Unicode characters in identifiers see <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/identifiers\" target=\"_blank\" rel=\"noopener noreferrer\">this<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So here is a little example of a C++ program that uses emojis. Can you figure out what it does?<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;iostream>\n\nusing \ud83c\udf74 = int;\nusing \ud83d\udd37 = double;\n\nstruct \ud83c\udfe0\n{\n   \ud83c\udf74 \ud83d\ude0f (\ud83c\udf74 \ud83c\udf7a, \ud83c\udf74 \ud83e\udd69)\n   {\n      return \ud83c\udf7a + \ud83e\udd69;\n   }\n};\n\nint main()\n{\n   \ud83c\udfe0 \ud83c\udfe8;\n   std::cout &lt;&lt; \ud83c\udfe8.\ud83d\ude0f(1, 2) &lt;&lt; '\\n';\n\n   constexpr \ud83d\udd37 \ud83e\udd67 = 3.1415927;\n   \ud83d\udd37 r = 5;\n   \ud83d\udd37 \ud83d\udd35 = \ud80c\udc02 * \ud83e\udd67 * r;\n\n   std::cout &lt;&lt; \ud83d\udd35 &lt;&lt; '\\n';\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">This is a screenshot of the program from Visual Studio:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/cpp.png\"><img loading=\"lazy\" decoding=\"async\" width=\"464\" height=\"656\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/cpp.png\" alt=\"\" class=\"wp-image-3438\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/cpp.png 464w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/cpp-212x300.png 212w\" sizes=\"auto, (max-width: 464px) 100vw, 464px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"block-c91cf589-f04b-4ced-85a4-58d4a6fcb75e\">Can we do better (or maybe worse)? Of course, we do. We can do it the Egyptian style writing C++ in hieroglyphs.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\ud80c\udc5c\ud80c\udc80\ud80c\udc60 &lt;\ud80d\udc2d\ud80c\udc49\ud80c\udd19\ud80c\udd4a \ud80c\udda6>\n\ud80c\udd8c\ud80c\udd9a\ud80c\udda3 \ud80c\udc42\ud80c\uddfd\ud80c\udc61(\ud80c\udda6 \ud80c\udc20\ud80c\ude60\ud80c\udf32 \ud80c\udd47, \ud80c\udda6 \ud80c\udc20\ud80c\ude60\ud80c\udf32 \ud80c\udd53) \ud80c\udc98 \ud80c\udf79\ud80c\udfac\ud80c\udf7b \ud80c\udd47 \ud80c\udee0 \ud80c\udd53; \ud80c\udc93\n\n\ud80c\udc5c\ud80c\udc80\ud80c\udc60 &lt;\ud80d\udc2d\ud80c\udc49\ud80c\udd19\ud80c\udd4a \ud80c\udda6>\n\ud80d\udc2d\ud80c\udc49\ud80c\udd19\ud80c\udd4a \ud80c\udde3\ud80c\ude0c\ud80c\udc93\n\ud80c\udc98\n\ud80c\udd58\ud80c\udc5a\ud80c\uddab:\n   \ud80c\udc5c\ud80c\udc80\ud80c\udc60 &lt;\ud80d\udc2d\ud80c\udc49\ud80c\udd19\ud80c\udd4a \ud80c\udecd>\n   \ud80c\udd8c\ud80c\udd9a\ud80c\udda3 \ud80c\udcda\ud80c\udf0c\ud80c\udef9\ud80c\udd40(\ud80c\udecd&amp;&amp; \ud80c\uded7, \ud80c\udda6 \ud80c\udc20\ud80c\ude60\ud80c\udf32 \ud80c\udd47, \ud80c\udda6 \ud80c\udc20\ud80c\ude60\ud80c\udf32 \ud80c\udd53)\n   \ud80c\udc98\n      \ud80c\udf79\ud80c\udfac\ud80c\udf7b \ud80c\uded7(\ud80c\udd47, \ud80c\udd53);\n   \ud80c\udc93\n\ud80c\udc93;\n\n\ud80c\udc21\ud80c\udc3d\ud80c\udce9 \ud80c\udc69\ud80c\ude62\ud80c\udc6a()\n\ud80c\udc98\n   \ud80c\udde3\ud80c\ude0c\ud80c\udc93&lt;\ud80c\udc21\ud80c\udc3d\ud80c\udce9> \ud80c\udd45\ud80c\udc0e\ud80c\udce6;\n   \ud80c\udc21\ud80c\udc3d\ud80c\udce9 \ud80c\udcd5 \ud80c\ude08 \ud80c\udd45\ud80c\udc0e\ud80c\udce6.\ud80c\udcda\ud80c\udf0c\ud80c\udef9\ud80c\udd40(\ud80c\udc42\ud80c\uddfd\ud80c\udc61&lt;\ud80c\udc21\ud80c\udc3d\ud80c\udce9>, 1, 2);\n\n   \ud80c\udc6d\ud80c\udccc\ud80c\udc54 \ud80c\udc81 \ud80c\udcd5 \ud80c\udc81 \ud80c\udd03\ud80c\udce0;\n\ud80c\udc93<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">In case that&#8217;s too small to read perhaps this screenshot is a bit better for reading:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/hiero.png\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"802\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/hiero-700x802.png\" alt=\"\" class=\"wp-image-3443\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/hiero-700x802.png 700w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/hiero-262x300.png 262w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/hiero-768x880.png 768w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/hiero.png 776w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s not so far off from this:<br><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full\" src=\"https:\/\/www.vtmag.vt.edu\/sum16\/img\/question-hieroglyphs.jpg\" width=\"950\" height=\"594\"><br>(<a href=\"https:\/\/www.vtmag.vt.edu\/sum16\/question.html\" target=\"_blank\" rel=\"noopener noreferrer\">Source<\/a>)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to check more about the Unicode block of Egyptian hieroglyphs see <a href=\"https:\/\/www.compart.com\/en\/unicode\/block\/U+13000\" target=\"_blank\" rel=\"noopener noreferrer\">Unicode Block &#8220;Egyptian Hieroglyphs&#8221;<\/a> or <a href=\"http:\/\/xahlee.info\/comp\/unicode_egyptian_hieroglyph.html\" target=\"_blank\" rel=\"noopener noreferrer\">Egyptian Hieroglyph<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This program prints 3 to the console, although that is harder to figure out because I cheated and didn&#8217;t show the whole program. This part actually:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;iostream>\n\n#define \ud80c\udc98 {\n#define \ud80c\udc93 }\n#define \ud80c\udc81 &lt;&lt;\n#define \ud80c\udc84 >>\n#define \ud80c\uddfc *\n#define \ud80c\udee0 +\n#define \ud80c\ude08 =\n\n#define \ud80c\udc6d\ud80c\udccc\ud80c\udc54 std::cout\n#define \ud80c\udc6d\ud80c\udccc\ud80c\udc45 std::cin\n#define \ud80c\udc21\ud80c\udc3d\ud80c\udce9 int\n#define \ud80c\udcfd\ud80c\udc0c\ud80c\udc13\ud80c\udc70 char\n#define \ud80c\udc5c\ud80c\udc80\ud80c\udc60 template\n#define \ud80d\udc2d\ud80c\udc49\ud80c\udd19\ud80c\udd4a class\n#define \ud80c\udd58\ud80c\udc5a\ud80c\uddab public\n#define \ud80c\udc20\ud80c\ude60\ud80c\udf32 const\n#define \ud80c\udf79\ud80c\udfac\ud80c\udf7b return\n#define \ud80c\udd8c\ud80c\udd9a\ud80c\udda3 auto\n#define \ud80c\udd03\ud80c\udce0 '\\n'\n#define \ud80c\udc69\ud80c\ude62\ud80c\udc6a main<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The equivalent readable code of the above example is as follows:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">template &lt;class T>\nauto add(T const a, T const b) { return a + b; }\n\ntemplate &lt;class T>\nclass foo\n{\npublic:\n   template &lt;class F>\n   auto compose(F&amp;&amp; f, T const a, T const b)\n   {\n      return f(a, b);\n   }\n};\n\nint main()\n{\n   foo&lt;int> f;\n   int r = f.compose(add&lt;int>, 1, 2);\n\n   std::cout &lt;&lt; r &lt;&lt; '\\n';\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Visual Studio seems to have problems displaying some Unicode characters, although I didn&#8217;t figure out the pattern. Sometimes they are OK, sometimes they are not. However, the source code is correct and you can successfully build and run a program written in Unicode.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/vshiero.png\"><img loading=\"lazy\" decoding=\"async\" width=\"700\" height=\"84\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/vshiero-700x84.png\" alt=\"\" class=\"wp-image-3446\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/vshiero-700x84.png 700w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/vshiero-300x36.png 300w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/vshiero-768x93.png 768w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/vshiero.png 987w\" sizes=\"auto, (max-width: 700px) 100vw, 700px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">You do have to save the source code using an encoding that allows you to enter the Unicode characters that you want. To do that you have to go to File > Save as &#8230; > Save with Encoding and make the appropriate selection.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/vsencoding.png\"><img loading=\"lazy\" decoding=\"async\" width=\"459\" height=\"235\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/vsencoding.png\" alt=\"\" class=\"wp-image-3464\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/vsencoding.png 459w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/vsencoding-300x154.png 300w\" sizes=\"auto, (max-width: 459px) 100vw, 459px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If you are using Windows 10, there is an emoji application that you can use to type for them. Just type <tt>Win + .<\/tt> or <tt>Win + ;<\/tt>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/win1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"576\" height=\"466\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/win1.png\" alt=\"\" class=\"wp-image-3449\" srcset=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/win1.png 576w, https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/win1-300x243.png 300w\" sizes=\"auto, (max-width: 576px) 100vw, 576px\" \/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For more information on this see <a href=\"https:\/\/www.pcworld.com\/article\/3223429\/windows-10-how-to-type-emoji-on-your-pc.html\" target=\"_blank\" rel=\"noopener noreferrer\">How to type emoji on your PC using Windows 10 Fall Creators Update<\/a> or <a href=\"https:\/\/blogs.windows.com\/windowsexperience\/2018\/02\/05\/windows-10-tip-get-started-emoji-keyboard-shortcut\/\" target=\"_blank\" rel=\"noopener noreferrer\">Windows 10 Tip: Get started with the emoji keyboard shortcut<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But how do you display Unicode characters in the Windows console? You need to use a <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/desktop\/Intl\/code-page-identifiers\" target=\"_blank\" rel=\"noopener noreferrer\">code page<\/a> that supports them. Here is an example:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include \"windows.h\"\n#include &lt;iostream>\n#include &lt;codecvt>\n\nstd::string utf16_to_utf8(std::u16string utf16_string)\n{\n   std::wstring_convert&lt;std::codecvt_utf8_utf16&lt;int16_t>, int16_t> convert;\n   auto p = reinterpret_cast&lt;const int16_t *>(utf16_string.data());\n   return convert.to_bytes(p, p + utf16_string.size());\n}\n\nstd::string utf32_to_utf8(std::u32string utf32_string)\n{\n   std::wstring_convert&lt;std::codecvt_utf8&lt;int32_t>, int32_t> convert;\n   auto p = reinterpret_cast&lt;const int32_t *>(utf32_string.data());\n   return convert.to_bytes(p, p + utf32_string.size());\n}\n\nint main()\n{\n   if(IsValidCodePage(CP_UTF8))\n      SetConsoleOutputCP(CP_UTF8);\n\n   std::cout &lt;&lt; utf16_to_utf8(u\"\u2660\u2663\u2665\u2666\") &lt;&lt; '\\n';\n   std::cout &lt;&lt; utf32_to_utf8(U\"\u2777\u24ff\u2776\u277e\") &lt;&lt; '\\n';\n}<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The output of this is as follows:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/consoleout.png\"><img loading=\"lazy\" decoding=\"async\" width=\"249\" height=\"91\" src=\"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/consoleout.png\" alt=\"\" class=\"wp-image-3451\"\/><\/a><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">If you want to learn more about converting between Unicode strings see the following:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"http:\/\/milan11.github.io\/cpp-unicode-conversions\/\" target=\"_blank\" rel=\"noopener\">C++ &#8211; Unicode conversions<\/a><\/li><li><a href=\"https:\/\/stackoverflow.com\/questions\/31302506\/stdu32string-conversion-to-from-stdstring-and-stdu16string\" target=\"_blank\" rel=\"noopener\">std::u32string conversion to\/from std::string and std::u16string<\/a><\/li><li><a href=\"https:\/\/stackoverflow.com\/questions\/32055357\/visual-studio-c-2015-stdcodecvt-with-char16-t-or-char32-t\" target=\"_blank\" rel=\"noopener\">Visual Studio C++ 2015 std::codecvt with char16_t or char32_t<\/a><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">However, the Windows console does not currently support emojis (and, in general, Unicode characters from the <a href=\"https:\/\/en.wikipedia.org\/wiki\/Plane_(Unicode)#Supplementary_Multilingual_Plane\" target=\"_blank\" rel=\"noopener noreferrer\">Supplementary Multilingual Plane<\/a>. That support will come in the <a href=\"https:\/\/github.com\/microsoft\/Terminal\" target=\"_blank\" rel=\"noopener noreferrer\">Windows Terminal<\/a>, which is currently in preview. You can read more about that <a href=\"https:\/\/devblogs.microsoft.com\/commandline\/introducing-windows-terminal\/\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>. Excited?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><iframe loading=\"lazy\" class=\"giphy-embed\" src=\"https:\/\/giphy.com\/embed\/ckeHl52mNtoq87veET\" width=\"480\" height=\"264\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><br><a href=\"https:\/\/giphy.com\/gifs\/yes-avengers-infinity-war-ckeHl52mNtoq87veET\">via GIPHY<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Of course, C++ is not the only programming language that allows emojis in identifiers. You can see examples from other languages <a href=\"https:\/\/what.thedailywtf.com\/topic\/25242\/which-languages-allow-emoji-identifiers\/14\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We all know C++ is a powerful yet complex programming language. But it can also be fun. For instance, you can use emojis and other Unicode characters in the source code. Of course, nobody sane would use emojis for identifiers. But it&#8217;s possible and you can have a little fun if have some spare time. <\/p>\n<p>Identifiers are sequences of digits, underscores, lowercase and upper case Latin letters, and most Unicode characters. Identifiers are not allowed to begin with a digit, they must begin with an underscore, a Latin letter, or a non-digit Unicode character. For more information about the Unicode characters in identifiers see <a href=\"https:\/\/en.cppreference.com\/w\/cpp\/language\/identifiers\" rel=\"noopener noreferrer\" target=\"_blank\">this<\/a>.<\/p>\n<p>So here is a little example of a C++ program that uses emojis. Can you figure out what it does?<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[7],"tags":[451,590,125,589],"class_list":["post-3437","post","type-post","status-publish","format-standard","hentry","category-c","tag-c","tag-emoji","tag-fun","tag-unicode"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Example of using emojis and other Unicode characters in C++ source code.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Marius Bancila\"\/>\n\t<meta name=\"keywords\" content=\"c++,unicode,fun,emoji\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Marius Bancila&#039;s Blog | About code. Mostly on C++\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"C++ is fun\" \/>\n\t\t<meta property=\"og:description\" content=\"Example of using emojis and other Unicode characters in C++ source code.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-05-16T15:31:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2022-09-15T18:43:40+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"C++ is fun\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Example of using emojis and other Unicode characters in C++ source code.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2019\\\/05\\\/16\\\/cpp-is-fun\\\/#article\",\"name\":\"C++ is fun\",\"headline\":\"C++ is fun\",\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/05\\\/cpp.png\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2019\\\/05\\\/16\\\/cpp-is-fun\\\/#articleImage\",\"width\":464,\"height\":656},\"datePublished\":\"2019-05-16T17:31:42+02:00\",\"dateModified\":\"2022-09-15T20:43:40+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":3,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2019\\\/05\\\/16\\\/cpp-is-fun\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2019\\\/05\\\/16\\\/cpp-is-fun\\\/#webpage\"},\"articleSection\":\"C++, C++, emoji, fun, unicode\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2019\\\/05\\\/16\\\/cpp-is-fun\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"position\":2,\"name\":\"IT\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"position\":3,\"name\":\"Software\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"name\":\"C++\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"position\":4,\"name\":\"C++\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2019\\\/05\\\/16\\\/cpp-is-fun\\\/#listItem\",\"name\":\"C++ is fun\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2019\\\/05\\\/16\\\/cpp-is-fun\\\/#listItem\",\"position\":5,\"name\":\"C++ is fun\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/c\\\/#listItem\",\"name\":\"C++\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Marius Bancila\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2019\\\/05\\\/16\\\/cpp-is-fun\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Marius Bancila\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2019\\\/05\\\/16\\\/cpp-is-fun\\\/#webpage\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2019\\\/05\\\/16\\\/cpp-is-fun\\\/\",\"name\":\"C++ is fun\",\"description\":\"Example of using emojis and other Unicode characters in C++ source code.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2019\\\/05\\\/16\\\/cpp-is-fun\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2019-05-16T17:31:42+02:00\",\"dateModified\":\"2022-09-15T20:43:40+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"C++ is fun","description":"Example of using emojis and other Unicode characters in C++ source code.","canonical_url":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/","robots":"max-image-preview:large","keywords":"c++,unicode,fun,emoji","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/#article","name":"C++ is fun","headline":"C++ is fun","author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/mariusbancila.ro\/blog\/wp-content\/uploads\/2019\/05\/cpp.png","@id":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/#articleImage","width":464,"height":656},"datePublished":"2019-05-16T17:31:42+02:00","dateModified":"2022-09-15T20:43:40+02:00","inLanguage":"en-US","commentCount":3,"mainEntityOfPage":{"@id":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/#webpage"},"isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/#webpage"},"articleSection":"C++, C++, emoji, fun, unicode"},{"@type":"BreadcrumbList","@id":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog#listItem","position":1,"name":"Home","item":"https:\/\/mariusbancila.ro\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","position":2,"name":"IT","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","position":3,"name":"Software","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","name":"C++"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","position":4,"name":"C++","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/#listItem","name":"C++ is fun"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/#listItem","position":5,"name":"C++ is fun","previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/#listItem","name":"C++"}}]},{"@type":"Organization","@id":"https:\/\/mariusbancila.ro\/blog\/#organization","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","url":"https:\/\/mariusbancila.ro\/blog\/"},{"@type":"Person","@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author","url":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/","name":"Marius Bancila","image":{"@type":"ImageObject","@id":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g","width":96,"height":96,"caption":"Marius Bancila"}},{"@type":"WebPage","@id":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/#webpage","url":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/","name":"C++ is fun","description":"Example of using emojis and other Unicode characters in C++ source code.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/#breadcrumblist"},"author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"datePublished":"2019-05-16T17:31:42+02:00","dateModified":"2022-09-15T20:43:40+02:00"},{"@type":"WebSite","@id":"https:\/\/mariusbancila.ro\/blog\/#website","url":"https:\/\/mariusbancila.ro\/blog\/","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","inLanguage":"en-US","publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Marius Bancila's Blog | About code. Mostly on C++","og:type":"article","og:title":"C++ is fun","og:description":"Example of using emojis and other Unicode characters in C++ source code.","og:url":"https:\/\/mariusbancila.ro\/blog\/2019\/05\/16\/cpp-is-fun\/","article:published_time":"2019-05-16T15:31:42+00:00","article:modified_time":"2022-09-15T18:43:40+00:00","twitter:card":"summary","twitter:title":"C++ is fun","twitter:description":"Example of using emojis and other Unicode characters in C++ source code."},"aioseo_meta_data":{"post_id":"3437","title":"C++ is fun","description":"Example of using emojis and other Unicode characters in C++ source code.","keywords":[{"label":"C++","value":"C++"},{"label":"unicode","value":"unicode"},{"label":"fun","value":"fun"},{"label":"emoji","value":"emoji"}],"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":{"id":"aioseo-article-636968c3d5f01","slug":"article","graphName":"Article","label":"Article","properties":{"type":"BlogPosting","name":"#post_title","headline":"#post_title","description":"#post_excerpt","image":"","keywords":"","author":{"name":"#author_name","url":"#author_url"},"dates":{"include":true,"datePublished":"","dateModified":""}}},"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":"{\"article\":{\"articleType\":\"BlogPosting\"},\"course\":{\"name\":\"\",\"description\":\"\",\"provider\":\"\"},\"faq\":{\"pages\":[]},\"product\":{\"reviews\":[]},\"recipe\":{\"ingredients\":[],\"instructions\":[],\"keywords\":[]},\"software\":{\"reviews\":[],\"operatingSystems\":[]},\"webPage\":{\"webPageType\":\"WebPage\"},\"blockGraphs\":[]}","pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-03-18 21:03:35","updated":"2025-12-12 07:53:21","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"author_meta":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"featured_img":null,"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"uagb_comment_info":3,"uagb_excerpt":"We all know C++ is a powerful yet complex programming language. But it can also be fun. For instance, you can use emojis and other Unicode characters in the source code. Of course, nobody sane would use emojis for identifiers. But it's possible and you can have a little fun if have some spare time.&hellip;","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">C++<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">C++<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">C++<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">emoji<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">fun<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/c\/\" class=\"advgb-post-tax-term\">unicode<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">C++<\/span>","<span class=\"advgb-post-tax-term\">emoji<\/span>","<span class=\"advgb-post-tax-term\">fun<\/span>","<span class=\"advgb-post-tax-term\">unicode<\/span>"]}},"comment_count":"3","relative_dates":{"created":"Posted 7 years ago","modified":"Updated 4 years ago"},"absolute_dates":{"created":"Posted on May 16, 2019","modified":"Updated on September 15, 2022"},"absolute_dates_time":{"created":"Posted on May 16, 2019 5:31 pm","modified":"Updated on September 15, 2022 8:43 pm"},"featured_img_caption":"","series_order":"","jetpack_shortlink":"https:\/\/wp.me\/pYNdv-Tr","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/3437","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/comments?post=3437"}],"version-history":[{"count":28,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/3437\/revisions"}],"predecessor-version":[{"id":4551,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/3437\/revisions\/4551"}],"wp:attachment":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/media?parent=3437"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/categories?post=3437"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/tags?post=3437"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}