0

私はこの簡単なコードを持っています:

std::ifstream ifs;
ifs.open ("test.txt", std::ifstream::in);
char c = ifs.get();
while (ifs.good()) {
   std::cout << c;
   c = ifs.get();
}
ifs.close();

しかし、私は多くのエラーが発生していますか?そのような:

Error   9   error C3083: 'ifstream': the symbol to the left of a '::' must be a type    test.cpp    
Error   8   error C2228: left of '.open' must have class/struct/union   test.cpp

等々。

ファイルの先頭にこれらの定義があります

#include <iostream>
#include <fstream>
#include "stdafx.h"
using namespace std;

コンソール アプリケーションで VS2012 を使用しています。

編集1:

完全なコードは次のとおりです。

void ReadRawImages::Read(int frameNumber)
{
std::ifstream ifs;

      ifs.open ("test.txt", std::ifstream::in);

       char c = ifs.get();

       while (ifs.good()) {
            std::cout << c;
            c = ifs.get();
       }

  ifs.close();


 }

また、次の警告があることにも注意しました。

Warning 1   warning C4627: '#include <iostream>': skipped when looking for precompiled header use   test.cpp
Warning 2   warning C4627: '#include <fstream>': skipped when looking for precompiled header use    test.cpp
4

2 に答える 2

3

ヘッダファイルを後に置く #include "stdafx.h"

#include "stdafx.h"
#include <iostream>
#include <fstream>

stdafx.hは最初に含まれるファイルでなければなりません。これは Microsoft 固有の規則です。

Visual C++ は、コンパイル オプション /Yu'stdafx.h' が (既定で) オフになっていない限り、ソース ファイルの #include "stdafx.h" の前に何もコンパイルしません

于 2013-05-23T11:35:38.493 に答える
2

あなたのプロジェクトはおそらくプリコンパイル済みヘッダーを利用しています。その場合、各.cppファイルの最初の行は次のようになります。

#include "stdafx.h"

または、ヘッダーの名前が何であれ。

于 2013-05-23T11:35:13.240 に答える