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++ 不会编译源文件中 #include "stdafx.h" 之前的任何内容,除非未选中编译选项 /Yu'stdafx.h'(默认情况下)1

于 2013-05-23T11:35:38.493 回答
2

您的项目可能正在使用预编译的头文件。如果是这样,每个.cpp文件的第一行应该是:

#include "stdafx.h"

或者无论标题的名称是什么。

于 2013-05-23T11:35:13.240 回答