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 str
is 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];