tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
2
ZUGRIFFE
919
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Cappaja Cappaja ist offline Mitglied Silber
    Registriert seit
    May 2009
    Ort
    Konstanz
    Beiträge
    85
    hallo,

    ich habe folgendes Problem das ich einen CString, gewonnen aus dem Dateinamen eines CFileDialogs mittels GetFileName(), als char* überführen möchte. die funktion c_str() sollte dazu in der lage sein, allerdings kann ich diese nicht ordnungsgemäß ausführen. Hat jemand eine Idee wie ich das machen könnte? mein problem ist derzeit, dass beim punkt-operator keine auswahlliste der möglichen befehle angezeigt wird, auch nicht mit STRG + LEER

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    
        int  mats;
        char mesg[MSG_LEN_S];
        char *MatName;
     
        if(!oup_ing)
        {
            if(OpenWaveOutputDevice(GetSafeHwnd()))
            {
                MatName = NULL;
                CFileDialog loadFile(TRUE, NULL, NULL, NULL, "Mat Files(*.mat)|*.MAT|Wav Files (*.wav|*.WAV||");
     
                if(loadFile.DoModal() == IDOK)
                {
                    MatName = loadFile.GetFileName().c_str();
                    mats = MatFiletopRecBuf(MatName);
                    if(mats != 0)
                    {
                                   ...........
    Geändert von Cappaja (23.06.09 um 20:03 Uhr)
     

  2. #2
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.806
    Blog-Einträge
    5
    Hallo Cappaja,

    c_str() ist eine Methode der STL-Klasse string. Das in MFC verwendete CString gehört zur ATL und ist etwas komplett anderes. Eine CString-Instanz kann man laut Dokumentation einfach in einen LPCTSTR casten (was einem nullterminierten C-String entspricht).

    Grüße, Matthias
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  3. #3
    Cappaja Cappaja ist offline Mitglied Silber
    Registriert seit
    May 2009
    Ort
    Konstanz
    Beiträge
    85
    Hallo Matthias,

    danke erstmal, der Ansatz ging auf jedenfall in die richtige Richtung. LPCTSTR liefert ein const char*, ich benötige allerdings nur ein char*. Habe aus den MSDN noch die Methode GetBuffer(int nMinBufLength) gefunden. Jetzt funktioniert es! Aber nochmals danke, den LPCTSTR-Cast kann ich sicher noch woanders gebrauchen

    Code :
    1
    2
    3
    
    CString s;
    s = loadFile.GetFileName();
    MatName = s.GetBuffer(255);

    gruß cappaja
    Geändert von Cappaja (25.06.09 um 22:52 Uhr)
     

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 17.11.09, 14:24
  2. Operator überladen, POINTER übergeben ?
    Von MFC openGL im Forum C/C++
    Antworten: 16
    Letzter Beitrag: 09.01.05, 14:59
  3. CString Pointer zweisen
    Von Börni234 im Forum C/C++
    Antworten: 6
    Letzter Beitrag: 06.01.05, 23:17
  4. Antworten: 15
    Letzter Beitrag: 26.10.04, 15:06
  5. CString von dll dem progamm übergeben
    Von Executer im Forum VisualStudio & MFC
    Antworten: 3
    Letzter Beitrag: 10.10.04, 20:33