VC++ et erreurs de compilations :(

Résolu
morpheus83z Messages postés 59 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 19 août 2004 - 18 août 2004 à 11:22
fleurisette55 Messages postés 2 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 26 mars 2008 - 26 mars 2008 à 12:54
Bonjour tout le monde !

Voilà, je ne comprends pas, j'ai un programme qui ne veut pas se compiler et je désespère vraiment ...

#include // iostream.h est déprécié
#include <string>
#include <fstream>
#include <cstdlib>

int main()
{
ifstream file("fichier.txt");
if( !file.is_open() )
{
std::cerr << "Erreur d'ouverture du fichier" << std::endl;
return EXIT_FAILURE;
}
std::string line;
std::vector<std::string> file_content;
while( std::getline( file, line ) )
{
file_content.push_back( line );
}
// désormais file_content[i] contient la i-ème ligne du fichier (attention c'est un tableau, ca commence à la ligne 0)

return EXIT_SUCCESS;
}

Y'a t-il un oubli, quelquechose ?

Sinon, connaissez-vous un bout de code qui me permettrait d'ouvrir un fichier et de l'implémanter dans une variable tableau (pour exploitation de cette variable ensuite) ?

Merci beaucoup.

20 réponses

essirc Messages postés 48 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 26 juillet 2005 3
18 août 2004 à 11:58
Hello,

Voici une version de ton code modifiée pour comiler sous VC++ 6 :

#include // iostream.h est déprécié
#include <string>
#include <fstream>
#include <cstdlib>
#include <vector> // Pour pouvoir utiliser les vectors

using namespace std; // Pour ne pas avoir a préciser std:: toutes les 5 minutes

int main()
{
ifstream file("fichier.txt"); // Manquait un std::
if( !file.is_open() )
{
cerr << "Erreur d'ouverture du fichier" << std::endl;
return EXIT_FAILURE;
}
string line;
vector<string> file_content;
while(getline( file, line ) )
{
file_content.push_back( line );
}
// désormais file_content[i] contient la i-ème ligne du fichier (attention c'est un tableau, ca commence à la ligne 0)

return EXIT_SUCCESS;
}

T'inquiètes pas pour les warnings, c'est normal :)
3
morpheus83z Messages postés 59 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 19 août 2004
18 août 2004 à 11:25
Ah juste un oubli, voici les fantastiques erreurs :( :

Deleting intermediate files and output files for project 'Test - Win32 Debug'.
--------------------Configuration: Test - Win32 Debug--------------------
Compiling...
test.cpp
e:\test\test\test.cpp(8) : error C2065: 'ifstream' : undeclared identifier
e:\test\test\test.cpp(8) : error C2146: syntax error : missing ';' before identifier 'file'
e:\test\test\test.cpp(8) : error C2065: 'file' : undeclared identifier
e:\test\test\test.cpp(9) : error C2228: left of '.is_open' must have class/struct/union type
e:\test\test\test.cpp(15) : error C2039: 'vector' : is not a member of 'std'
e:\test\test\test.cpp(15) : error C2065: 'vector' : undeclared identifier
e:\test\test\test.cpp(15) : error C2275: 'std::string' : illegal use of this type as an expression
e:\test\test\test.cpp(15) : error C2065: 'file_content' : undeclared identifier
e:\test\test\test.cpp(16) : fatal error C1903: unable to recover from previous error(s); stopping compilation
Error executing cl.exe.

Test.exe - 9 error(s), 0 warning(s)
0
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
18 août 2004 à 11:52
pour ta question ui,
BFichierIni::getListe(...)

cf mes srces

sinon, pr les erreurs, sache qu'apparemment VC6 est guere compatible avec les stl....

dc
ifstream, etc ne sont aparemment po définis ds tes includes

++

Magic Nono: l'informagicien! 8-)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 11:59
manque <vector>

et std::ifstream, ifstream ca existe pas

et met

std::cerr << "Erreur d'ouverture du fichier\n"; pas de std::endl sur std::cerr, ca sert a rien
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
morpheus83z Messages postés 59 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 19 août 2004
18 août 2004 à 14:17
Merci à tous, j'ai adopter la solution avec les warnings :) !

Juste un autre petit truc .. Moi le C++ je débarque un peu (même si j'en ai fait) et un truc bête que je voudrais savoir, c'est comment concaténer toutes les valeurs que je vais récupérer dans mon file_content[i] dans une variable unique ?! Je sais qu'on peut utiliser += ou append et avec la fonction size on renvoie le nombre de caractères contenus dans la string mais je n'ai pas tout capter .. Vous n'avez pas un exemple ?

Merci beaucoup !
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 14:28
#include
#include <string>
#include <fstream>
#include <cstdlib>

int main()
{

ifstream file("fichier.txt");

if( !file.is_open() )
{
std::cerr << "Erreur d'ouverture du fichier\n";
return EXIT_FAILURE;
}
std::string line;
std::vector<std::string> file_content;
while( std::getline( file, line ) ) file_content.push_back( line );

// pour concatener les string de file_content
std::string all_lines;
for( std::vector< std::string >::size_type i; i < file_content.size(); i++ )
all_lines += file_content[i];

}
0
morpheus83z Messages postés 59 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 19 août 2004
18 août 2004 à 14:39
Wow .. Non seulement t'es très fort mais en plus hyper rapide à répondre .. Jte remercie .. Mon passage de VB au C++ me fait vraiment bizarre :)

Bon allez je file tester ! :)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 14:50
ca te ferais encore plus bizarre de passer au C, parce que faire ca en C c'est autre chose :D
0
morpheus83z Messages postés 59 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 19 août 2004
18 août 2004 à 15:09
lol .. le C .. :)

Hum sinon un truc que j'ai pas capté, tu déclares pas le i pour la boucle for ?! Paske moi quand je veux le déclaré il me dit de regarder sa déclaration :p ...

Le soucis c'est que le i vaut quelques milliards donc il ne passe pas par la boucle .. bêtement j'ai fait avec a et même problème ..
0
morpheus83z Messages postés 59 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 19 août 2004
18 août 2004 à 15:11
Non bah en fait je viens de comprendre .. size_type i = 0 .. ça fonctionne nickel :) ! Si y'avait pas Internet alala .. :)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 16:25
le type size_type de std::vector est en generale un typedef de unsigned, mais l'utilisé peu autoriser le compilateur à faire qq optimisations

d'une maniere generale, pour les boucle, compteur, indexé un tabeau, et autres calcul (division, modulo) c'est plus rapide avec des unsigned
0
morpheus83z Messages postés 59 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 19 août 2004
18 août 2004 à 17:10
okaay c'est noté :) !

Jviens de voir tes sources .. impressionnant :) !

Sinon, tu saurais pas comment convertir cette ligne VB en quelque chose de simple en C++ :

codeasc = Asc(Mid(mscrypt, i, 1)) - Asc(Mid(key, j, 1))

codeAsc c'est un entier
msgcrypt c'est qqch du genre : azazlpds$^*ùdszdz
key c'est un truc style : 1234567

Allez, ciao, jcontinuerais ça demain moi :)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 17:29
en fait faudrai plutot me dire ce que tu voudrais faire en c++ parce que ca c'est du chinois pour moi :(
0
morpheus83z Messages postés 59 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 19 août 2004
18 août 2004 à 17:35
Je t'explique !

En fait j'ai une variable msgcrypt (contenu dans un fichier à la base).

cette variable, avant le passage dans ce bout de code, est du style :

msgcrypt = "u??|?~{?u??y^``?v??}z??ne`bb|zv~_aav?x??uma_aav}|??mb"

2 Fonctions sont présente : Asc pour convertir un caractère par sa valeur Ascii. Mid pour sélectionner un seul caractère de la chaine de caractère .. Cette ligne de code est dans une boucle donc je passe tout les caractères en revu, un par un ..

Ce que je cherche c'est donc un moyen en C++ de sélectionner un seul caractère dans une chaine de caractère. Un ptit peu plus clair jpense ;)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 17:42
en c tu peux passer par un simple cast pour obtenir le code ascii (pas necessaire en c)

et pour selectionner un caracter dans une chaine, que ce soit pour un char[] ou std::string

char c[] = "hello";

tu as c[1] == 'e'
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 17:42
je voulais dire en c++ au debut
0
morpheus83z Messages postés 59 Date d'inscription mercredi 26 mai 2004 Statut Membre Dernière intervention 19 août 2004
18 août 2004 à 17:43
CString::Mid -> visiblement, il y a des liens entre VC++ et VB :) ! Bon jcrois que jvais yarivé :) ! Allez, @ Demain tlm :)
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
18 août 2004 à 17:44
oui voila, avec les CString des MFC si tu veux
0
mhokuto Messages postés 1 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 30 mars 2005
30 mars 2005 à 18:14
--
La différence entre la pratique et la théorie est plus grande en pratique qu'en théorie.
0
fleurisette55 Messages postés 2 Date d'inscription mercredi 26 mars 2008 Statut Membre Dernière intervention 26 mars 2008
26 mars 2008 à 12:54
jé besoin d'un exemple d'application en visuel c++ a base des MFC pour la gestion des erreurs c'est vraiment urgent
0
Rejoignez-nous