MFC String Ausgabe

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • MFC String Ausgabe

    Hallo erst mal!

    Ich habe eine MFC Anwendung gestartet und wundere mich warum der Code partout nicht funktioniert! :?

    Bitte Hilfe!

    Quellcode

    1. // CTest3View Zeichnen
    2. void CTest3View::OnDraw(CDC* pDC)
    3. {
    4. CTest3Doc* pDoc = GetDocument();
    5. ASSERT_VALID(pDoc);
    6. map<const char*, int> ages;
    7. ages["Homer"] = 38;
    8. ages["Marge"] = 37;
    9. ages["Lisa"] = 8;
    10. ages["Maggie"] = 1;
    11. ages["Bart"] = 11;
    12. pDC->TextOut(10, 10, "Bart is ages["Bart"] years old");
    13. }
    Alles anzeigen


    Mfg
  • In C++ kann man nicht wie in Perl oder PHP die zu ersetzenden Variablen einfach in den String hinein schreiben.
    Die einfachste Variante ist wahrscheinlich die:

    Quellcode

    1. CString s ("Bart is ");
    2. s += ages["Bart"];
    3. s += " years old";
    4. pDC->TextOut(10, 10, s);

    nur das das wahrscheinlich nicht funktionieren wird.
    Damit es sicher funktioniert musst du noch die Definition der Map auf

    Quellcode

    1. map<CString, int> ages;

    ändern, da ein zweiter Verweis auf den String "Bart" nicht notwendigerweise die selbe Adresse hat wie der erste.

    hth
  • Vielen Dank! Rückfrage!

    Vielen Dank für die Hilfe!

    Ich habe es so gemacht wie von dir geschrieben, dann habe ich 7 Fehler erhalten.

    Dann habe ich etwas geändert und nun sind es noch 3 Fehler :? :

    --------------------Konfiguration: test10 - Win32 Debug--------------------
    Kompilierung läuft...
    test10View.cpp
    C:\Programme\Microsoft Visual Studio\MyProjects\test10\test10View.cpp(61) : error C2065: 'map' : nichtdeklarierter Bezeichner
    C:\Programme\Microsoft Visual Studio\MyProjects\test10\test10View.cpp(61) : error C2275: "CString" : Ungültige Verwendung dieses Typs als Ausdruck
    c:\programme\microsoft visual studio\vc98\mfc\include\afx.h(368) : Siehe Deklaration von 'CString'
    C:\Programme\Microsoft Visual Studio\MyProjects\test10\test10View.cpp(61) : error C2065: 'ages' : nichtdeklarierter Bezeichner
    Fehler beim Ausführen von cl.exe.

    test10.exe - 3 Fehler, 0 Warnung(en)



    Der Code:

    Quellcode

    1. void CTest10View::OnDraw(CDC* pDC)
    2. {
    3. CTest10Doc* pDoc = GetDocument();
    4. ASSERT_VALID(pDoc);
    5. map<CString; ages;
    6. ages["Homer"] = 38;
    7. ages["Marge"] = 37;
    8. ages["Lisa"] = 8;
    9. ages["Maggie"] = 1;
    10. ages["Bart"] = 11;
    11. CString s ("Bart is ");
    12. s += ages["Bart"];
    13. s += " years old";
    14. pDC->TextOut(10, 10, s);
    15. }
    Alles anzeigen


    Vielleicht weißt du dazu auch eine Lösung! Super! :D

    Mfg.