compiler kennt c_str() nicht



  • Ich will unter Verwendung von std::string ein Funktion schreiben mit der ich Zeichenketten aus einem Prozess auslesen kann. Die Funktion soll die Zeichenkette per char* zurückgeben. Dafür ist im MSDN 'c_str()' dokumentiert.

    MSDN: "Converts the contents of a string as a C-style, null-terminated string."

    Genau das was ich brauche. Nur bei mir kennt der Compiler die Funktion 'c_str()' nicht. Warum? Ich verwende Visual C++ 2008.

    #include <iostream>
    #include <vector>
    #include <string>
    
    // Pseudo ReadSTR(long addr) function ...
    {
        std::vector<std::string> String;
        // memory reading here
        String.push_back("TESTSTRING123..."); // fake read string for testing ...
        return String.c_str(); // error C2039: 'c_str' : is not a member of 'std::vector<_Ty>'
    }
    


  • dudewhereis_c_str schrieb:

    Ich will unter Verwendung von std::string ein Funktion schreiben mit der ich Zeichenketten aus einem Prozess auslesen kann. Die Funktion soll die Zeichenkette per char* zurückgeben. Dafür ist im MSDN 'c_str()' dokumentiert.

    Was auch richtig ist. Du verwendest c_str aber nicht auf einen String, sondern auf ein Vector. Der Wiederum kennt c.str nicht.

    std::string String  = "TESTSTRING123...";
        return String.c_str();
    

    cu André



  • Manchmal seh ich den Wald vor lauter Bäumen nicht... omg wie peinlich

    Danke André! 😉



  • Die Funktion soll die Zeichenkette per char* zurückgeben

    Ich will kein Krümelkacker sein, aber c_str () gibt ein const char* zurück - falls du also ein char brauchst, kommst du wohl um ne Kopie nicht drum rum ^^

    bb



  • oder schreib:

    vector<string> String;
    String.push_back("Teststring...");
    return String[0].c_str();
    


  • Ihr wollt aber nicht einen const char* von ner lokalen Variable die nach dem verlassen der Funktion zerstört wird zurückgeben? 👎


Anmelden zum Antworten