- 261 名前:デフォルトの名無しさん mailto:sage [2012/04/13(金) 09:09:14.47 ]
- ごめんごめん途中で送信してしまった。
読まなくても良いくらいC++でのスタンダードな回答。 struct filter_t{ int e; const char *t; }; struct fizzbuzz_t { int in; std::string out; fizzbuzz_t &operator >>( filter_t &f ) { if( 0==in%f.e ){ out.append( f.t ); } return *this; } operator const char *() { if( out.length() ) return out.c_str(); static char tmp[50]; itoa( in, tmp, 10 ); return tmp; } }; fizzbuzz_t operator >>( int i, filter_t &f ){ fizzbuzz_t fb; fb.in = i; fb>>f; return fb; } filter_t fizz = { 3, "Fizz", }; filter_t buzz = { 5, "Buzz", }; filter_t gizz = { 7, "Gizz", }; int main(){ 105>>fizz>buzz>>gizz; return 0; }
|

|