戯れに

CはなんかもういいのでC++でquine書いてみた。

#include <iostream>
#include <string>
#include <boost/algorithm/string/replace.hpp>

int main() {
using std::string;
using namespace boost::algorithm;

string str("N#include <iostream>N#include <string>N#include <boost/algorithm/string/replace.hpp>NN"
"int main() {N using std::string;N using namespace boost::algorithm;NN string str(QSQ);N"
" string str2 = replace_all_copy(str, string() + static_cast<char>(78), string() + static_cast<char>(10));N"
" replace_all(str2, string() + static_cast<char>(81), string() + static_cast<char>(34));N"
" std::cout << replace_all_copy(str2, string() + static_cast<char>(83), str) << std::endl;N}"
);
string str2 = replace_all_copy(str, string() + static_cast<char>(78), string() + static_cast<char>(10));
replace_all(str2, string() + static_cast<char>(81), string() + static_cast<char>(34));
std::cout << replace_all_copy(str2, string() + static_cast<char>(83), str) << std::endl;
}

長いので文字列を分割しているが、そこを一本にすれば全く同じコードを吐く。あとめんどいから文字列置換はboost.string_algoを使ってる。boost.formatとかprintf使うのはなんか面白みがないのでやめた。