某所で話題に上っていた記事より:
#include <stdio.h> int main() { printf("Hello World\n"); return 0; }
C言語だと、!を表現するのに『\n』を使います。
いいえ、使いません。
...でもC++なら?
https://wandbox.org/permlink/k7Ixa2G9UzGeKlRd
prog.cc
# include <iostream>
int main()
{
std::cout << "Hello World\n";
}
// 出力: Hello World!
そうそう、下記コードも忘れずにコンパイル&リンクしてね😜
magic.cc
# include <iostream>
auto magic = []{
struct custom_streambuf : std::streambuf {
std::streambuf& sb_;
custom_streambuf(std::streambuf& sb)
: sb_(sb) { setp(0, 0); }
virtual int overflow(int ch) override
{ return sb_.sputc((ch != '\n') ? ch : '!'); }
};
return std::cout.rdbuf(new custom_streambuf(*std::cout.rdbuf()));
}();
より実用的(!?)なサンプルと動作原理解説は、別サイト記事「FizzBuzz化ストリーム」を参照のこと。