Conversie van string naar char – c++

Voor een programma dat ik schrijf op basis van specificaties, wordt een variabele als een tekenreeks doorgegeven aan een functie. Ik moet die string instellen op een char-variabele om een andere variabele in te stellen. Hoe zou ik dit doen?

Dit is het in het headerbestand:

void setDisplayChar(char displayCharToSet);

dit is de functie die het instelt:

void Entity::setElementData(string elementName, string value){
    if(elementName == "name"){
            setName(value);
    }
    else if(elementName == "displayChar"){
    //      char c;
      //      c = value.c_str();
            setDisplayChar('x');//cant get it to convert :(
    }
    else if(elementName == "property"){
            this->properties.push_back(value);
    }
}

Bedankt voor de geavanceerde hulp!


Antwoord 1, autoriteit 100%

Je kunt een specifiek teken uit een tekenreeks halen door het simpelweg te indexeren. Het vijfde teken van stris bijvoorbeeld str[4](een verschil met één omdat het eerste teken str[0]is).

Houd er rekening mee dat je in de problemen komt als de string korter is dan je index denkt dat het is.

c_str(), zoals je hebt gedaan in je opmerkingen, geeft je een char*representatie (de hele string als een C “string”, meer correct een verwijzing naar het eerste teken) in plaats van een char.

Je zou dat evengoed kunnen indexeren, maar in dit specifieke geval heeft het geen zin.


Antwoord 2, autoriteit 42%

je hoeft alleen value[0] te gebruiken en dat geeft het eerste teken terug.

char c = value[0];

Other episodes