locked
une convesion de type qui se fait mal RRS feed

  • Question

  • bonjour

    j'essaie d'affecter le résultat d'une conversion a une variable

    j'ai codé:

                    len = strlen( sWord);
                    strcpy_s( pWord, len+1, (const char*)sWord);

    et le compilateur me répond

    1>..\..\..\..\Linguistic\ParserManager\src\ParserManager.cpp(838): error C2143: erreur de syntaxe : absence de ']' avant ')'
    1>..\..\..\..\Linguistic\ParserManager\src\ParserManager.cpp(841): error C2664: 'strlen' : impossible de convertir le paramètre 1 de 'std::string' en 'const char *'
    1>          Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
    1>..\..\..\..\Linguistic\ParserManager\src\ParserManager.cpp(842): error C2440: 'cast de type' : impossible de convertir de 'std::string' en 'const char *'
    1>          Aucun opérateur de conversion définie par l'utilisateur disponible qui puisse effectuer cette conversion, ou l'opérateur ne peut pas être appelé
    


    Jean Noël Martin

    jeudi 7 juillet 2016 17:10

Réponses

  • Bonjour JeanNoel53,

    Pourquoi utilisez vous des std::string avec des fonctions orienté langage C ? Si vous voulez effectuer une copie de votre chaîne de caractères sWord, faites simplement :

    std::string sWord = "Hello, there!";
    
    std::string pWord = sWord;  //Effectue une copie de la std::string
    

    Cordialement,

    jeudi 7 juillet 2016 17:23
  • Alors vous n'avez plus besoin de ce cast à la C tout dégueux.

    Paul Bacelar, Ex - MVP VC++

    • Marqué comme réponse JeanNoel53 mardi 19 juillet 2016 17:12
    vendredi 8 juillet 2016 09:02
    Modérateur

Toutes les réponses

  • Bonjour JeanNoel53,

    Pourquoi utilisez vous des std::string avec des fonctions orienté langage C ? Si vous voulez effectuer une copie de votre chaîne de caractères sWord, faites simplement :

    std::string sWord = "Hello, there!";
    
    std::string pWord = sWord;  //Effectue une copie de la std::string
    

    Cordialement,

    jeudi 7 juillet 2016 17:23
  • Vous donnez les lignes 841 et 842, mais la première erreur est ligne 838.

    En plus les messages d'erreurs sont triviaux.

    

    std::size_t length = sWord.copy(pWord,sWord.length());

    pWord[length] = '\0';


    Paul Bacelar, Ex - MVP VC++

    jeudi 7 juillet 2016 17:40
    Modérateur
  • oui mais je  dois avoir une char* en sortie

    Jean Noël Martin

    jeudi 7 juillet 2016 20:27
  • J'ai mis c_str() après les variables

    Jean Noël Martin

    vendredi 8 juillet 2016 04:22
  • Alors vous n'avez plus besoin de ce cast à la C tout dégueux.

    Paul Bacelar, Ex - MVP VC++

    • Marqué comme réponse JeanNoel53 mardi 19 juillet 2016 17:12
    vendredi 8 juillet 2016 09:02
    Modérateur