素人臭い質問で申しわけない。
C++で、以下のようにファイルから取り込んだ内容(テキスト)を
出力させようようとしたのですが、
------------------------------------------------------------
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
string filename(file.txt);
ifstream in_fs(filename.c_str(), ios::in | ios::binary);
if (ifs == NULL) {
return EXIT_FAILURE;
}
for (int i = 0; !ifs.eof(); i++) {
cout << static_cast<char>(ifs.get());
}
cout << endl;
return EXIT_SUCCESS;
}
------------------------------------------------------------
無理矢理に、キャストしているところが気持悪くて。
こんな方法でいいのか?
と思い書き込ませていただきました。
もちろんコンパイルも通って思い通りの動作しますが、
環境依存してしまうとか、キャストは危険だとか
ついつい考えてしまいます。
このままで良いなら、このままで良いと
意見・感想をください。
char ch;
while ( ifs.get(ch) ) {
cout << ch;
}
これならキャスト不要。
もっと安直なのは:
cout << ifs.rdbuf();
ループすら不要。
行番号も出したかったので、2つめの方法は使えませんが。
タブを2文字のスペースに変えたりもしたいので、
1つめの方法でやります。
ありがとうございました。
追伸
ホームページ時々、見させていただいています。
STLもバリバリ使えるように頑張ります。
getlineで一行まるっと読んだ方が楽カモ。