IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[débutant] nombre de colonne dan sun fichier csv


Sujet :

C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Points : 26
    Points
    26
    Par défaut [débutant] nombre de colonne dan sun fichier csv
    bonjour, voila une demi journé que je tourne en rond avec des bouts de code trouvé à droite à gauche mais sans succes.
    je me suis servi de la faq pour calculer le nombre de ligne d'un fichier csv, mais là j'essaye de faire la meme chose avec les colonnes et plus précisément stoquer, pour chaque ligne, les valeurs séparées par les ";". seulement je n'arrive ni à récupérer le nombre de colonne (pour alouer mon tableau de facon dynamique), ni à lire facilement la ligne à la recherche des ";".

    voila le code pour lire le nombre de ligne (merci la faq :p ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int CReadWriteCsvFile::GetNbRow(char chFileName[255])
    {
    	int iNbRow=0;	
    	std::ifstream fichier( chFileName );	
    	if ( fichier )
        {
    		iNbRow = std::count(
    		std::istreambuf_iterator<char>( fichier ),
    		std::istreambuf_iterator<char>(),
    		'\n' );
        }
     
    	return iNbRow;
    }
    comment je peu faire le plus simplement possible parce que je vous raconte pas le temps que j'ai passé pour comprendre ces quelques lignes!

    merci.

  2. #2
    Membre régulier Avatar de gelam
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Points : 74
    Points
    74
    Par défaut
    Bonsoir,
    Si ce n'est que pour l'allocation que tu as besoin du nombre de colonnes tu n'a qu'à utiliser un vector et faire des push_back ( c'est lui qui gère l'allocation dynamique et la libération )

  3. #3
    Membre régulier Avatar de gelam
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2003
    Messages : 69
    Points : 74
    Points
    74
    Par défaut
    Rebonsoir,
    J'ai répondu un vite... Je m'explique... Il existe un grand nombre de solutions possibles à ton problème. Je t'en propose une qui a le mérite de rester simple ;-)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    #include <iostream>
    #include <string>
    #include <vector>
    #include <algorithm>
    using namespace std ;
     
    int main()
    {
    	int pos ;
    	string str="un;deux;trois" ;
    	vector<string> mots ;
     
    	// Comptage des ;
    	cout << count(str.begin(),str.end(),';') << endl ;
     
    	// Découpage
    	pos = str.find(";") ;
    	while( pos!=string::npos ){
    		mots.push_back(str.substr(0,pos) ) ;
    		str = str.erase(0,pos+1) ;
    		pos = str.find(";") ;
    	}
    	mots.push_back(str) ;
     
    	// Affichage
    	for(int i=0;i<mots.size();i++)
    		cout << '<' << mots[i] << '>' << endl ;
     
    	return 0 ;
    }
    Bonne soirée

  4. #4
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    Cherche "split" dans la FAQ ou le forum.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Points : 26
    Points
    26
    Par défaut
    merci pour vos reponses.
    j'avais trouvé la fonction strtok(..) mais ca ne marche pas top si j'ai une chaine genre "1;2;;4" , ca me sort 3 colone car cette fonction ne "voit pas" les 2 ";" cote a cote.

    je vais etudier les solutions que vous m'avez proposé.
    merci

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Points : 26
    Points
    26
    Par défaut
    bon voila où j'en suis.

    j'ai utiliser le code de gelam car c'est celui que j'ai compris le plus vite (apres voir si je pourai optimiser en utilisant d'autre fonction comme split)
    donc j'obtien ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    void CReadWriteCsvFile::GetSize()
    {
    	int iNbColtemp=1;
    	m_iNbRow=0;
    	m_iNbCol=1;
     
    	std::ifstream fichier( m_chFileName );	
    	if ( fichier)
        {
    		int pos ;
    		string str="" ;
     
    		while (!fichier.eof())//jusqu'à la fin du fichier
    		{
    			fichier>>str; //recuperation de la ligne
    			iNbColtemp=1;
    			m_iNbRow++;
    			pos = str.find(";") ;//position du 1er ";"
     
    			while( pos!=string::npos )
    			{
    				str = str.erase(0,pos+1) ;
    				pos = str.find(";") ;
     
    				iNbColtemp++;//1 colonne supplementaire trouvée
    				if(iNbColtemp>m_iNbCol)//on cherhce le nombre de colonne maximum du fichier csv
    					m_iNbCol=iNbColtemp;
    			}
    		}
    		m_iNbRow--; //on ne compte pas la derniere ligne qui est seulement un retour chario dans les fichiers csv
    	}else
    	{
    		m_iNbCol=0;
    		m_iNbRow=0;
    	}
    }
    la je recupere le nombre de ligne et le nombre de colonnes dans mon fichier CSV.
    apres j'utilise une autre fonction pour créer un tableau a 2 dimensions avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    void CReadWriteCsvFile::GetContent()
    {
    	int iNumRow=0;
    	int iNumCol=0;
            string ** Tab;
     
    	// créer un tableau à 2 dimensions [ x ][ y ]
    	const int dim1 = m_iNbCol; // taille de la dimension x
    	const int dim2 = m_iNbRow; // taille de la dimension y
     
    	// tenter d'allouer la taille demandée dim1 x dim2
    	try
    	{
    		// dimension 1 : tableau de pointeurs vers des tableaux 
    		Tab = new string * [ dim1 ];
    		// initialiser les pointeurs à 0 (NULL)
    		std::fill_n( Tab, dim1, static_cast<string*>( 0 ) );
     
    		// dimension 2 : les tableaux 
    		for ( int i = 0; i < dim1; ++i)
    		{
    			Tab[ i ] = new string[ dim2 ];
    		}
    	}
    	catch ( const std::bad_alloc & ) // erreur d'allocation
    	{
    		// désallouer tout ce qui a été alloué avec succès
    		for ( int i = 0; i < dim1; ++i ) 
    		{
    			delete [] Tab[ i ];
    		}
    		delete [] Tab;
    	}
     
    	//on rempli le tableau avec le contenun du fichier
     
     
    }
    mais il me reste a remplir le tableau avec le contenu.
    je ne suis pas passé par les vector comme dans le code d'origine de gelam car je ne maitrise vraiment pas cette notion.
    par contre c'est sur que ca va etre lent car je vais relire a nouveau tout le fichier pour stocker les valeur dans mon tableau.

    merci

  7. #7
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    La fonction split (que tu trouveras un peu partout) tient en quelques lignes et n'est vraiment pas compliquée. D'autant plus que ce n'est rien de plus que des manips sur les chaînes comme celles que tu utilises ici pour compter ton nombre de colonnes.

    Cela te faciliterait vraiment (vraiment vraiment) les choses, car en plus de compter tes colonnes sans effort, cela te récupérerait aussi les éléments du tableau.

  8. #8
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 754
    Points : 10 719
    Points
    10 719
    Billets dans le blog
    3

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Points : 26
    Points
    26
    Par défaut
    ben je doit pas etre doué, pour la fonction split je la trouve ni dans ma msdn ni dans les faq

    et concernant le code d'Aurelien j'y avait deja essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    istringstream iss( "mot1;mot2;mot3;mot4" );
        string mot;
        while ( std::getline( iss, mot, ';' ) )
        {
            cout << mot << '\n';
        }
    mais ma chaine est stockée dans un string et non dans un istringstream et je ne sais pas comment passer de l'un à l'autre.
    j'ai trop du mal avec tout ces types différent CString string char* ..stream.. etc.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Points : 26
    Points
    26
    Par défaut
    ok cool, avec un peu de motivation j'y suis arrivé.
    j'ai gardé l'alocation dynamique de mon tableu 2D
    et j'ai rajouter le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    std::ifstream fichier( m_chFileName );	//ouverture du fichier
    	if ( fichier)//ouverture ok
        {
                    string mot;
    		string str="" ;
     
     
    		while (!fichier.eof())//jusqu'à la fin du fichier
    		{
    			fichier>>str; //recuperation de la ligne
    			istringstream iss( str );
     
    			while(std::getline( iss, mot, ';' ))
    			{
    				Tab[iNumRow][iNumCol]=mot;
    				iNumCol++;
    			}
    			iNumCol=0;
    			iNumRow++;
    		}
    	}
    ainsi je rempli bien mon tableau de string avec le contenu et si j'ai deux ";" cote à cote ca me stoque un string vide donc ok.

    merci pour vos coup de main.

    (note pour plutard : trouver cette fonction split histoire de simplifier ce code qui risque d'erte une usine a gaz pour pas grand chose )

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Points : 26
    Points
    26
    Par défaut
    juste un autre petit soucis.

    mon string ** Tab, j'aimerai le mettre dans le .h mais impossible. le compilateur me dit
    error C2143: syntax error : missing ';' before '*'
    error C2501: 'string' : missing storage-class or type specifiers
    error C2501: 'Tab' : missing storage-class or type specifiers
    il ne reconnait pas la classe string!! pourquoi?

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    ben je doit pas etre doué, pour la fonction split je la trouve ni dans ma msdn ni dans les faq
    Ca ne fait pas partie du standard, mais comme c'est une fonction plus qu'utile et implémentée dans de nombreux autres langages (PHP, VB, ...) on la retrouve facilement un peu partout. Sur ce forum par exemple, ou en suivant le lien dans la FAQ C++.

    et concernant le code d'Aurelien j'y avait deja essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    istringstream iss( "mot1;mot2;mot3;mot4" );
        string mot;
        while ( std::getline( iss, mot, ';' ) )
        {
            cout << mot << '\n';
        }
    mais ma chaine est stockée dans un string et non dans un istringstream et je ne sais pas comment passer de l'un à l'autre.
    j'ai trop du mal avec tout ces types différent CString string char* ..stream.. etc.
    Ici l'istringstream est bien initialisé à partir d'un string non ?

    il ne reconnait pas la classe string!! pourquoi?
    http://c.developpez.com/faq/cpp/?page=console

    Pour les tableaux dynamiques :
    http://c.developpez.com/faq/cpp/?page=STL#STL_vector

    Ce qui donne a peu près :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    vector<vector<string> > tab;
    while (getline(fichier, ligne, '\n'))
    {
        tab.push_back(vector<string>());
     
        istringstream iss(ligne);
        string mot;
        while (getline(iss, mot, ';' ))
        {
            if (!mot.empty())
                tab.back().push_back(mot);
        }
    }

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Points : 26
    Points
    26
    Par défaut
    ok ca me semble interressant tout ca.

    pour le coup du string j'avai un peu fumé en effet.

    pour mon erreur de compilation c'est réparé et merci pour l'info sinon jamais je l'aurai trouvé seul.

    je vai essayer de passer par l'utilisation de vector comme tu as marqué mais rien que le fait de déclarer un vector comme "vector<vector<string> > tab;" je me retrouve avec 74 warning!!!!

  14. #14
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <vector>
    #include <string>
     
    using namespace std;
     
    vector<vector<string> > Tab;
    :

    Edit : oups, je croyais que tu avais dit "erreurs". Qu'est-ce donc que ces warnings ? Si c'est "debug name too long" ou une bêtise de ce genre, c'est normal.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Points : 26
    Points
    26
    Par défaut
    les warnings sa donne un enorme bloc comme ca:

    U:\T1259 - Telescrollmande\Programmation\IHM\ReadWriteCsvFile.cpp(99) : warning C4786: '?$vector@V?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@s
    td@@V?$allocator@V?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@@2@' : identifier was truncated to '255' characters in the browser informati
    on
    c:\program files\microsoft visual studio\vc98\include\vector(22) : warning C4786: '?$vector@V?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@V
    ?$allocator@V?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@@2@' : identifier was truncated to '255' characters in the browser information
    U:\T1259 - Telescrollmande\Programmation\IHM\ReadWriteCsvFile.cpp(99) : see reference to class template instantiation 'std::vector<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,clas
    s std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::al
    locator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > >' being compiled
    c:\program files\microsoft visual studio\vc98\include\xmemory(56) : warning C4786: '?address@?$allocator@V?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@st
    d@@@2@@std@@@std@@QBEPAV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@AAV32@@Z' : identifier was truncated to '255' characters in the browser i
    nformation
    c:\program files\microsoft visual studio\vc98\include\vector(24) : see reference to class template instantiation 'std::allocator<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class
    std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > >' being compiled
    U:\T1259 - Telescrollmande\Programmation\IHM\ReadWriteCsvFile.cpp(99) : see reference to class template instantiation 'std::vector<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,clas
    s std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::al
    locator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > >' being compiled
    c:\program files\microsoft visual studio\vc98\include\xmemory(58) : warning C4786: '?address@?$allocator@V?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@st
    d@@@2@@std@@@std@@QBEPBV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@ABV32@@Z' : identifier was truncated to '255' characters in the browser i
    nformation
    c:\program files\microsoft visual studio\vc98\include\vector(24) : see reference to class template instantiation 'std::allocator<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class
    std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > >' being compiled
    U:\T1259 - Telescrollmande\Programmation\IHM\ReadWriteCsvFile.cpp(99) : see reference to class template instantiation 'std::vector<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,clas
    s std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::al
    locator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > >' being compiled
    c:\program files\microsoft visual studio\vc98\include\xmemory(61) : warning C4786: '?allocate@?$allocator@V?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@s
    td@@@2@@std@@@std@@QAEPAV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@IPBX@Z' : identifier was truncated to '255' characters in the browser in
    formation
    c:\program files\microsoft visual studio\vc98\include\vector(24) : see reference to class template instantiation 'std::allocator<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class
    std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > >' being compiled
    U:\T1259 - Telescrollmande\Programmation\IHM\ReadWriteCsvFile.cpp(99) : see reference to class template instantiation 'std::vector<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,clas
    s std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > >,class std::allocator<class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::al
    locator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > > >' being compiled
    c:\program files\microsoft visual studio\vc98\include\xmemory(68) : warning C4786: '?construct@?$allocator@V?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@
    std@@@2@@std@@@std@@QAEXPAV?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@2@ABV32@@Z' : identifier was truncated to '255' characters in the browse
    r information
    ...
    et des truc du genre il y en a des pages

  16. #16
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Oui c'est bien ça. Aucun souci à se faire, le mieux étant simplement de désactiver ce warning.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma warning(disable : 4786)

  17. #17
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 282
    Points : 11 036
    Points
    11 036
    Par défaut
    Citation Envoyé par mandagor
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (!fichier.eof())//jusqu'à la fin du fichier
    Jette la ressource où tu as trouvé ça. C'est peut-etre une très bonne ressource de Pascal, mais pas de C++.
    (C'est terrible, c'est la saison des eof en ce moment ...)
    (Voir la FAQ pour le pourquoi du comment)

    Sinon, la 4786 est une classique. Lis bien les messages que tu obtiens. Un identifiant trunqué à 255 caractères pour le le navigateur de code, c'est pas hyper important. De plus, tu es sous VC, et disposes donc de l'aide en ligne sur F1, à utiliser sur tes messages d'erreur aussi.

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 97
    Points : 26
    Points
    26
    Par défaut
    merci pour tout,

    le eof je vais le remplacer comme indiqué dans la faq.

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 228
    Points : 102
    Points
    102
    Par défaut tine pareil
    J'ai le meme genre de betise : ma solution ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #pragma warning( disable : 4786 )
    D'autres idées ??

Discussions similaires

  1. Grep Uniq sur colonne dans un fichier CSV en KSH
    Par luckythrice dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 08/07/2009, 21h26
  2. trouver nombre de "colonnes" dans un fichier
    Par gaze24 dans le forum SL & STL
    Réponses: 12
    Dernier message: 16/05/2008, 16h25
  3. Sélection de colonnes dans un fichier csv
    Par MottetCCSF dans le forum Langage
    Réponses: 1
    Dernier message: 20/12/2007, 16h42
  4. Réponses: 4
    Dernier message: 13/12/2006, 18h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo