none
initiliser une chaine RRS feed

  • Question

  • bonjour

    Je butte sur initialisation d'une chaîne

    J'ai écrit d'abord:

    erc CWManager::OpenDocument(std::wstring wsFullPathName)
       {
    	   enum OpenDocumentErrors
    	   {
              CANT_OPEN_DOCUMENT = 1,
           };
    	   bool m_bDocumentIsOpen;
    	   erc ErrorCode = INIT_NO_ERROR;
    	   System::String^ NomDocument = gcnew wsFullPathName;

    puis j'ai essayé:

    System::String^ NomDocument = gcnew String;

    et là le compilateur m'a répondu:

    1>..\..\..\..\Linguistic\WordReader\src\WordManager.cpp(38): error C2512: 'System::String::String' : aucun constructeur par défaut approprié disponible

    puis j'ai essayé:

    erc CWManager::OpenDocument(std::wstring wsFullPathName)
       {
    	   enum OpenDocumentErrors
    	   {
              CANT_OPEN_DOCUMENT = 1,
           };
    	   bool m_bDocumentIsOpen;
    	   erc ErrorCode = INIT_NO_ERROR;
    	   System::String^ NomDocument;
               int m_pAllWords;
    	   int m_lNumberOfWords;
    	   
           try
           {
    		  Word::_Application^ objApplication;
    		  Word::_Document^ objWord;
    		  Word::_Font^ objFont;
    		  Word::_ParagraphFormat^ objParagraph;
    		  Word::Words^ objWords;
    		  objApplication = gcnew Word::Application;
    		  objWord = gcnew Word::Document;
    		  NomDocument = gcnew wsFullPathName;

    et là le compilateur m'a répondu

    1>..\..\..\..\Linguistic\WordReader\src\WordManager.cpp(51): error C2061: erreur de syntaxe : identificateur 'wsFullPathName'

    mon problème est double:

    Comment initialiser une chaîne System::String

    Comment allouer à une chaîne une variable std:wstring.

    Jusqu'à présent j'avais fait cela en une passe.  Mais là ça ne marche pas.


    Jean Noël Martin

    mardi 31 juillet 2012 20:44

Réponses

  • Je ne retrouve pas les exemples, sans cela je ne serai pas venu poser la question. Il reste que la question de base reste bien et elle est claire:

    comment allouer une std::wstring à une System::String c'est peut être ça et j'ai trouvé la solution que j'avais utilisée : String ^systemstring = gcnew String(orig); . Et j'ai appliqué la deuxième référence avec succès:

    NomDocument = gcnew String( wsFullPathName.c_str());


    Jean Noël Martin




    • Modifié JeanNoel53 mardi 14 août 2012 14:23
    • Marqué comme réponse JeanNoel53 mardi 14 août 2012 14:24
    jeudi 2 août 2012 14:58

Toutes les réponses

  • "Jusqu'à présent j'avais fait cela en une passe"

    vous pouvez donner un exemple ?


    Paul Bacelar, Ex - MVP VC++

    • Marqué comme réponse JeanNoel53 mardi 14 août 2012 14:23
    • Non marqué comme réponse JeanNoel53 mardi 14 août 2012 14:24
    jeudi 2 août 2012 13:22
    Modérateur
  • Je ne retrouve pas les exemples, sans cela je ne serai pas venu poser la question. Il reste que la question de base reste bien et elle est claire:

    comment allouer une std::wstring à une System::String c'est peut être ça et j'ai trouvé la solution que j'avais utilisée : String ^systemstring = gcnew String(orig); . Et j'ai appliqué la deuxième référence avec succès:

    NomDocument = gcnew String( wsFullPathName.c_str());


    Jean Noël Martin




    • Modifié JeanNoel53 mardi 14 août 2012 14:23
    • Marqué comme réponse JeanNoel53 mardi 14 août 2012 14:24
    jeudi 2 août 2012 14:58