C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

A Poem of "Hello, World!" using C++

0. はじめに

この記事は 初心者C++er Advent Calendar 2017 の DAY 24 に寄稿したものです。😃

概要

C++初心者向けの記事を書く」というお題のアドベンカレンダーがあったので、私が思いつく限りで兎にも角にも "Hello, World!" を出力する C++ を使ったコード例を淡々と紹介したいと思います。

Note: この記事は「かれんだー埋まらなさそー><」と思い、ふんわり書いたポエムです。途中からかるぅく怪しいわぁるどになりますのであんまり真面目に読まず、春はあけぼの的なゆるっとした気持ちで眺めて頂ければ幸いです。😏

1. いーじーもーど 編

よくあるやつ:

#include <iostream>
int main() { std::cout << "Hello, World!"; }
Hello, World!

モダンな世界のデファクトスタンダードな亜種:

#include <iostream>
int main() { std::cout << u8"Hello, World!"; }
Hello, World!

むかしはこれがモダンだった亜種:

#include <iostream>
int main() { std::wcout << L"Hello, World!"; }
Hello, World!

悲しみの亜種:

#include <iostream>
// Note: C++17 Deprecated
#include <codecvt>
#include <locale>
int main()
{
  std::cout
    <<  std::wstring_convert
        < std::codecvt_utf8_utf16
          < char16_t
          >
        , char16_t
        >().to_bytes( u"Hello, World!🍣" )
    ;
}
Hello, World!

悲しみの亜種の亜種:

#include <iostream>
// Note: C++17 Deprecated
#include <codecvt>
#include <locale>
int main()
{
  std::cout
    <<  std::wstring_convert
        < std::codecvt_utf8
          < char32_t
          >
        , char32_t
        >().to_bytes( U"Hello, World!🍣" )
    ;
}
Hello, World!

ひつようじゅうぶん:

#include <cstdio>
int main() { puts( "Hello, World!" ); }
Hello, World!

そういうの、こせいじゃないから…:

#include <cstdio>
int main() { printf( "%s, %s!", "Hello", "World" ); }
Hello, World!

さいしゅうへいき:

#include <cstdlib>
int main() { system( "echo Hello, World!" ); }
Hello, World!

ばいなりあん:

#include <cstdio>
#include <initializer_list>
int main()
{
  for
  ( auto b 
  : { 0x48, 0x65, 0x6c, 0x6f
    , 0x2c, 0x20, 0x57, 0x6f
    , 0x72, 0x6c, 0x64, 0x21
    }
  )
    putchar( b );
}
Hello, World!

2. るなてぃっく 編

Note: "なんいど" とは別のいみで "るなてぃっく" ・x・

ふてくされ:

#include <cassert>
int main() { assert( false && "Hello, World!" ); }
prog.exe: prog.cc:2: int main(): Assertion `false && "Hello, World!"' failed.
Aborted

こんぱいるたいむ・ふてくされ:

int main() { static_assert( false, "Hello, World!" ); }
prog.cc: In function 'int main()':
prog.cc:1:29: error: static assertion failed: Hello, World!
 int main() { static_assert( false, "Hello, World!" ); }
                             ^~~~~

がめんにでれば、いいんでしょ:

#include <Hello, World!>
int main() { }
prog.cc:1:10: fatal error: Hello, World!: No such file or directory
 #include <Hello, World!>
          ^~~~~~~~~~~~~~~

がめんにでれば、いいんでしょの亜種:

#pragma Hello, World!
int main() { }
prog.cc:1: warning: ignoring #pragma Hello  [-Wunknown-pragmas]
 #pragma Hello, World!

がめんにでるとは・・・:

"Hello, World!"
prog.cc:1:1: error: expected unqualified-id before string constant
 "Hello, World!"
 ^~~~~~~~~~~~~~~

えらーじゃないからはずかしくないもん:

"Hello, World!"
clang++ -E a.cpp
# 1 "a.cpp"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 325 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "<a.cpp>" 2
Hello, World!

おしまい・x・
ゆるゆると肩の力が抜けて頂けていれば幸いです。

・・・それから・・・
メリークリスマス!😃
🍣🍗🍰