dポイントプレゼントキャンペーン実施中!

VC6で作られたプログラムをVS2019へ移行しているのですが、ofstreamが「error C2065:'ofstream':定義されていない識別子です」のエラーになってしまい困っています。
<iostream>や<fstream>をインクルードしても変わりません。
色々調べたのですがわからなくてこちらに質問しました。

お分かりになる方がいらしたらよろしくお願いいたします。

質問者からの補足コメント

  • ありがとうございます。
    まったく単純なところです。
    最初#includeは無かったのですが、付けても一緒でした。

    #include <iostream>
    #include <fstream>
    .
    .
    .
    ofstream fOut; ここでエラーが出ます。
    .
    .

    よろしくお願いします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2020/10/16 10:06
  • ありがとうございます。

    すいません、自分の知識では意味がわかりません。
    もう少しアホな奴に教えていただけるようにしていただけると助かります。

    よろしくお願いします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/10/16 10:12

A 回答 (3件)

とりあえず


#include <iostream>
#include <fstream>
の後でよいから
using namespace std;
の一文を入れる。
そうすればofstreamが定義されていないとは言われなくなる。

以下は理由の説明。
初期の標準C++ライブラリは<iostream.h>のように拡張子付のファイルをインクルードしていた。その後、<iostream>のように拡張子なしのファイルをインクルードするようになり、また標準C++ライブラリの要素は名前空間std内に用意されるように変わった。移行期には<iostream.h>のようなヘッダも残っていたが今は残ってない。はず。代わりに<iostream>をインクルードするならofstreamではなくstd::ofstreamを使わないといけない。
でもそうやって全部書き換えていくのは大変だから最初にusing namespace std;を入れておけばstd名前空間のものはstd::を付けずに使えるようになる。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ございません。
助かりました、ありがとうございます。

お礼日時:2020/10/19 09:29

using namespace std;


とか使ってる?
VC6世代だと標準クラスライブラリってstd名前空間に入ってなかったんじゃなかったっけ?
VS2019だと標準クラスライブラリのクラスはstd名前空間に入っているのでusing指定するか個別にstd::修飾するかしないとエラーになると思います。
この回答への補足あり
    • good
    • 0

プログラムを見せてください.



もちろん全部じゃなくていいよ. 無関係なところは削ってね.
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!