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 :

Probléme conversion de paramétre


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut Probléme conversion de paramétre
    Bonjour!
    voici le code qui me pose soucis... (je suis débutant, donc merci d'être indulgent! )

    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
    Sign::SearchIP()		
    {
    	string strFileTemp = "c:\\orant\\logs\\IP.ini";			
    	ifstream temp;
    	temp.open(strFileTemp.c_str());
     
    	if (temp.is_open())
    	{
    		string ligne;
    		int i = 1;
    		while (getline(temp, ligne))					
    		{
    			strncpy( xIP[i], ligne.c_str(), 50);	// erreur!
    			cout << xIP[i] << endl;
    			system("pause");
    			i++;
    		}
    		temp.close();
    		return true;
    	}
    	else
    	{
    		cout << "Impossible d'ouvrir le fichier.\n";
    		return false;
    	}
    }
    donc pour la ligne où il y'a le commentaire erreur, j'ai ce message: error C2664: 'strncpy' : cannot convert parameter 1 from 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' to 'char *'
    No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called.

    Merci pour vos lumiéres!

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 394
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 394
    Par défaut
    On ne connait pas le type de xIP, mais si c'est un tableau de string, c'est normal que ça ne marche pas: Une string n'est pas un char*...

    De plus, il faut faire attention avec strncpy() : Si la chaîne fait plus de 50 caractère, le \0 ne sera pas mis...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre expérimenté
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Par défaut
    xIP[i] ne serait pas une std::string ?
    on dirait au vu de l'erreur

    xIP[i] = ligne; // devrait suffir.

    "\\" devrait pouvoir être remplacé par "/"

    Je ne suis pas sûr que ta variable line serve à quelque chose, tu pourrais lire directement dans ton tableau.

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    bonjour ,
    strncpy est du c. il fonctionne avec les char *.
    Hors vu l'erreur, xIP[i] est une string.
    donc xIP[i]=ligne; suffit.
    si tu ne veut que les 50 premiers caractère tu fait
    xIP[i] = ligne.substr ( 0, 50 );

  5. #5
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut
    je vous remercis pour toutes les réponses. Effectivement xIP[i] était déclaré en tant que string et la ligne xIP[i] = ligne; suffit à régler mon probléme.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 23
    Dernier message: 02/10/2014, 01h36
  2. [NEWBIE] Problème passage en paramètre
    Par Goundy dans le forum Langage
    Réponses: 4
    Dernier message: 22/10/2005, 20h18
  3. [Débutant] Problème avec les paramètres d'une proc stockée
    Par babulior dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 28/06/2005, 15h38
  4. Problème avec les paramètres date BDE/ODBC Oracle/XP Pro
    Par Bloon dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/10/2004, 10h09
  5. Problème conversion date
    Par mat.M dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 30/03/2004, 15h05

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