ネタ元
縦書きをなくすなんてあり得ない
PCに縦書きが適さないからやめるの?
やってみる。
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <iterator>
#include <algorithm>
int main(int argc, const char* argv[])
{
if(argc < 2) return 1;
std::ifstream ifs(argv[1]);
if(!ifs.is_open()) return 2;
std::vector<std::string> src;
std::string line;
std::string::size_type m = 0;
while(!std::getline(ifs, line).eof()) {
src.push_back(line);
if(line.size() > m ) m = line.size();
}
std::vector<std::string> dest(m, std::string(src.size(), ' '));
for(std::vector<std::string>::size_type x = 0; x < src.size(); ++x) {
for(std::string::size_type y = 0; y < src[x].size(); ++y) dest[y][src.size() - x - 1] = src[x][y];
}
copy(dest.begin(), dest.end(), std::ostream_iterator<std::string>(std::cout, "\n"));
}
このプログラムの実行ファイルに自分自身を喰わせると以下の結果が出力されます。
} {i ###### n iiiiii c } fs } wsss isi t nnnnnn o ot httt ftf cccccc p frd isiddd (d( m llllll y o(: frl::: !:a a uuuuuu ( rs: (ce::: i:r i dddddd d (tv l.(ssv fig n eeeeee e sde ip!tte sfc ( s t:c nusrrc .s i <<<<<< t d:t estiit it< n aisvfi . :vo .hdnno sr t ltteso b :er s_:ggr _e2 gercts e sc< ib:: < oa) a oritrt g tts zag:ls pm r ranoer i rot ecesit e r g itgrae n ird (ktind nie c to>>ma ( n<: )(lze: (ft , hr >m ) gs: lie;: )su m> > , :ts >in_ s )(r c > :dt net t an o d s:r me(y r rr n e i:i )ip i eg1 s s zsn );fe n tv; t t etg s g u[ . _r> m ,m > r1 c e ti n] h n ynd = l= s ) a d pge i r 2; r ( e>s l n0 c ; * ) :t i e; ; , y:( n ) a sm e . r s =i, . e g t z s o v d 0es i f [ : ;_t z ( ] : td e ) ) o yy: ( ) s p: ) t <es ; { r t e sxr a r i m c=n _ [ g i x0( t ];s e . r r sxc a i . t z<s o e i r (sz < )re s ;c( t .) d +s, : +i : yz' s )e t (' r d)) i e;) n s ; g t+ > [+ ( yx s ]) t [ d s{ : r : c c . o s u i t z , e ( " ) \ n - " ) x ) ; - 1 ] = s r c [ x ] [ y ] ;
|
多分ズレて表示されていると思うけどキニシナイことにした。Webはほんと良くわからんw
わずか30行足らずのコードでこういう事が出来るC++は素晴らしい。