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

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

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 в консольном приложении.

edit1:

Полный код выглядит следующим образом:

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

0

Решение

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

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

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

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

3

Другие решения

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

#include "stdafx.h"

Или как бы там ни было название заголовка.

2

По вопросам рекламы [email protected]