String


C++ で文字列を扱うときには string クラスを使うものらしい.
でも,大抵のライブラリは string クラスに対応していなかったりする. 例えば,

 string filename = "input.dat";
 ifstream inputfile( filename );
で,'input.dat' というファイルを開けるかというと開けない. 僕なんかの場合,文字列をどこで使うかと言えば大抵の場合ファイル名で使っている ので,string でファイル名を指定できないとなると string の存在価値なんて ほとんどなくなってしまうのだが,決して string でファイル名を指定できない わけではない.
 string filename = "input.dat";
 ifstream inputfile( filename.c_str() );
こうすれば,'input.dat' というファイルを開けるのである. でも,あまりきれいではないなあと思う.
ちなみに,昔,僕が c_str() という関数の存在を知らなかった頃は,
 string filename = "input.dat";
 ifstream inputfile( filename.begin() );
というようなことをやっていた.要するに string の最初の文字を指すポインタを 指定してやればいいではないかというわけであるが,こうしてしまうと もう全然 smart ではないような気がする.
本当は,標準ライブラリの方で char* だけでなく string もサポートしてくれれば 一番いいのではないかと思うのだが,やはり難しいのだろうか.




戻る