none
Problème avec string RRS feed

  • Question

  • Hello !

    Je suis un utilisateur occasionnel du C++, plus familier du C.
    J'utilisais l'IDE Code::Blocks v17.12 et je voudrais passer Visual Studio 2017 Community.

    Cependant certains codes correctement compilés sous C::B ne le sont pas vous VS !?

    /* test.cpp : test de l'utilisation de string * problème dans MS Visual Studio 2017 Community
    * s'exécute sans erreur dans Code::Blocks v17.12
    */

    #include "pch.h" // ajouté par MS VS (génération d'une application console)
    #include <iostream>

    using namespace std; int main() { string motif("eeaeeeaee"); cout << motif.substr(0,3) << endl; cout << motif.substr(3,3) << endl; cout << motif.substr(6,3) << endl; return 0; }

    Ce code tout simple provoque l'erreur :

    aucun opérateur "<<" ne correspond à ces opérandes
              les types d'opérandes sont : std::ostream << std::basic_string<char, std::char_traits<char>, std::allocator<char>>

    Quelqu'un pourrait-il m'expliquer ce qui se passe ?
    D'avance merci.

    Luc


    French developer



    • Modifié LucRol mercredi 24 octobre 2018 17:13
    mercredi 24 octobre 2018 17:06

Réponses

  • A force de chercher j'ai fini par trouver :

    Il faut rajouter la librairie string !

    #include <string>

    Je ne vois pas bien pourquoi c'est nécessaire dans MS VS et pas dans C::B...


    French developer

    • Marqué comme réponse LucRol mercredi 24 octobre 2018 17:34
    mercredi 24 octobre 2018 17:34

Toutes les réponses

  • A force de chercher j'ai fini par trouver :

    Il faut rajouter la librairie string !

    #include <string>

    Je ne vois pas bien pourquoi c'est nécessaire dans MS VS et pas dans C::B...


    French developer

    • Marqué comme réponse LucRol mercredi 24 octobre 2018 17:34
    mercredi 24 octobre 2018 17:34
  • beaucoup de choses changent entre les headers fournis par C::B et MS (ou autres), et ceci n'est pas le moindre, c'est bien pire quand il s'agit de modifications dans les types de base (style signed chez l'un, unsigned chez l'autre).

    Probablement un moyen d'éviter les oiseaux migrateurs ;)


    • Modifié c.panel dimanche 23 décembre 2018 15:58
    dimanche 23 décembre 2018 15:56