Decimal string to char

Is er een manier om de numerieke reeks te converteren naar een char met die waarde? De tekenreeks "128" moet bijvoorbeeld worden geconverteerd naar een char met de waarde 128 .

2
@WTP de nummers bevinden zich binnen dat bereik.
toegevoegd de auteur Sinjuice, de bron
toegevoegd de auteur Ben Voigt, de bron
Wat moet er gebeuren als de numerieke waarde in de string <0 of > 255 is?
toegevoegd de auteur user142019, de bron

4 antwoord

Ja ... atoi van C.

char mychar = (char)atoi("128");

Een meer C ++ gerichte benadering zou zijn ...

template
    T fromString(const std::string& s)
{
     std::istringstream stream (s);
     T t;
     stream >> t;
     return t;
}

char mychar = (char)fromString(mycppstring);
5
toegevoegd

Er is een C-stijl atoi , maar converteert naar een int . Je moet zelf naar char casten.

Voor een oplossing in C ++ -stijl (die ook veiliger is) die u kunt doen

string input("128");
stringstream ss(str);
int num;
if((ss >> num).fail()) { 
   //invalid format or other error
}

char result = (char)num;
4
toegevoegd

Het hangt er van af. Als char is ondertekend en 8 bits, kunt u "128" niet converteren naar een char in base 10. De maximale positieve waarde van een getekende 8-bits waarde is 127.

Dit is een heel pedant antwoord, maar dit zou je op een gegeven moment waarschijnlijk moeten weten.

1
toegevoegd

U kunt atoi gebruiken. Dat levert je het gehele getal 128 op. Je kunt dat gewoon naar een char casten en je bent klaar.

char c = (char) atoi("128");
0
toegevoegd