Почему я получаю эту ошибку в коде С++

У меня есть этот простой код:

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

person mans    schedule 23.05.2013    source источник
comment
Можете ли вы опубликовать код непосредственно перед std::ifstream ifs;? Возможно, вы где-то раньше пропустили точку с запятой.   -  person Roger Rowland    schedule 23.05.2013
comment
откажитесь от строки, используя пространство имен std, поскольку вы используете std:: всесторонне   -  person Bathsheba    schedule 23.05.2013
comment
Ваш код работает нормально. Вы вообще обернули этот код в функцию?   -  person Niels Keurentjes    schedule 23.05.2013
comment
@NielsKeurentjes Спасибо, я уверен, что коды верны, проблема в том, что я не уверен, что мои настройки верны. Что мне нужно сделать, чтобы запустить этот код в MS Visual C++ 2012?   -  person mans    schedule 23.05.2013


Ответы (2)


Поместите заголовочные файлы после #include "stdafx.h"

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

stdafx.h должен быть первым включенным файлом, это специальное правило Microsoft.

Visual C++ не будет ничего компилировать до #include "stdafx.h" в исходном файле, если только параметр компиляции /Yu'stdafx.h' не отмечен (по умолчанию) 1

person masoud    schedule 23.05.2013
comment
О, я уже отвечал на тот же вопрос раньше, прочитайте это. - person masoud; 23.05.2013

Ваш проект, вероятно, использует предварительно скомпилированные заголовки. Если да, то первая строка каждого .cpp файла должна быть:

#include "stdafx.h"

Или как называется заголовок.

person Andy Prowl    schedule 23.05.2013