casten nicht möglich?



  • std::map<std::string, std::string>::const_iterator it;
        for ( it = a.begin(); it != a.end(); ++it ) {
    
          char *c = (char)it->first;  // wie bringe ich den std::string in ein char?
    
         // ich muss das c übergeben
         char *c = "hi"; // das geht bei der übergabe
         //char *c = it->first;  // geht nicht
    
        }
    

    error C2440: 'type cast' : 'const class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' kann nicht in 'char' konvertiert werden



  • char *c = (char)it->first;
    

    char *c ist ein Zeiger - ein Zeiger erwartet eine Adresse
    (char)it-first; liefert anscheinend abere einen Wert eine Variablen - wenn dieser Wert als Adresse interpretiert wird - - -> B U U U M

    wie bringe ich den std::string in ein char?

    besteht dein String nur aus einem Buchstaben ??? 😉



  • it->first

    liefert ja einen

    string, da std::map<std::string, std::string>::const_iterator it; der erste "key" ein string ist

    ich muss ich einer funktion, aber ein "..." übergeben sprich *char

    wie bringe ich das it->first in ein *char?



  • it->first.c_str()

    .c_str() gibt Dir bei einem std::string den Zeiger auf ein C-Style Character Array zurück



  • danke harry!

    ich habs jetzt so

    std::ostringstream buf;
    
    buf << it->first << ": " << it->second;
    
    //und dann bei übergabe
    buf.str().c_str()
    


  • //sollte auch funktionieren, kann aber sein, dass da noch Klammern fehlen.
    (it->first + it->second).c_str();
    

Anmelden zum Antworten