ゆとりーなの日記

日記的な事を書いて行くと思はれる

課題に答えてみるシリーズ

C/C++スレで

入力された数値を逆順に表示せよ。 
なお、この動作は0未満の値が入力されるまで 繰り返すものとする。 

という問題を見つけたので解いてみたなど。

#include <iostream>
#include <string>
#include <boost/lexical_cast.hpp>
#include <pstade/oven/algorithm.hpp>
#include <pstade/oven/stream_read.hpp>
#include <pstade/oven/taken_while.hpp>
#include <pstade/oven/reversed.hpp>
#include <pstade/oven/copied.hpp>

int main() {
  pstade::oven::for_each(pstade::oven::stream_read<int>(std::cin) | pstade::oven::taken_while([](const int x) {return x >= 0;}), [](const int x) {
    std::cout << static_cast<const std::string &>(boost::lexical_cast<std::string>(x) | pstade::oven::reversed | pstade::oven::copied) << std::endl;
  });
  return 0;
}

取り敢えず数字を一桁ずつ分割する的な関数が見つからなかったので文字に直してから逆順にして表示という頭の悪さを発揮しています。