C++文字出力

[戻る]
reshia 2004/11/24(水) 16:52:55
素人臭い質問で申しわけない。

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;
}
------------------------------------------------------------
無理矢理に、キャストしているところが気持悪くて。
こんな方法でいいのか?
と思い書き込ませていただきました。

もちろんコンパイルも通って思い通りの動作しますが、
環境依存してしまうとか、キャストは危険だとか
ついつい考えてしまいます。

このままで良いなら、このままで良いと
意見・感想をください。

επιστημη [E-Mail] [HomePage] 2004/11/24(水) 17:05:20
  char ch;
  while ( ifs.get(ch) ) {
    cout << ch;
  }

これならキャスト不要。
もっと安直なのは:

  cout << ifs.rdbuf();

ループすら不要。

reshia 2004/11/24(水) 17:17:57
[[解決]]
行番号も出したかったので、2つめの方法は使えませんが。
タブを2文字のスペースに変えたりもしたいので、
1つめの方法でやります。
ありがとうございました。

追伸
ホームページ時々、見させていただいています。
STLもバリバリ使えるように頑張ります。

επιστημη [E-Mail] [HomePage] 2004/11/24(水) 17:35:44
getlineで一行まるっと読んだ方が楽カモ。

古いスレッドには追加発言できません。