2013-05-23 1 views
0

J'ai ce code simple:Pourquoi je reçois cette erreur dans le code 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(); 

Mais je reçois beaucoup d'erreur? tels que:

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 

et ainsi de suite.

J'ai ces définitions au début du fichier

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

J'utilise VS2012 sur une application de la console.

edit1:

Le code complet est comme suit:

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(); 


} 

Je note également que j'ai ces avertissements:

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 
+1

Pouvez-vous poster le code immédiatement avant 'std :: ifstream ifs;'? Vous avez peut-être manqué un point-virgule quelque part plus tôt. –

+0

fossé la ligne "using namespace std" que vous utilisez std :: globalement – Bathsheba

+0

[Votre code fonctionne bien] (http://eval.in/31344). Avez-vous enveloppé ce code dans une fonction? –

Répondre

3

fichiers d'en-tête Put après #include "stdafx.h"

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

stdafx.h doit être le premier fichier inclus, cette règle spécifique est Microsoft.

Visual C++ ne compilera pas quoi que ce soit avant la #include "stdafx.h" dans le fichier source, à moins que l'option de compilation /Yu'stdafx.h » est pas cochée (par défaut) 1

+0

Merci Cela fonctionne, mais pourquoi? – mans

+0

Oh, j'ai déjà répondu à la même question avant, lisez [this] (http://stackoverflow.com/a/16040876/952747). – deepmax

2

Votre projet est probablement fait usage des en-têtes précompilés. Dans ce cas, la première ligne de chaque fichier .cpp doit être:

#include "stdafx.h" 

Ou quel que soit le nom de l'en-tête est.

Questions connexes