Char uchun o'nlik simvol

Bu qiymatni o'z ichiga olgan char ga raqamli qatorni aylantirishning bir usuli bormi? Masalan, "128" satri 128 qiymatini ushlab turadigan char ga aylantirishi kerak.

2
@WTP raqamlari shu oraliqda.
qo'shib qo'ydi muallif Sinjuice, manba
qo'shib qo'ydi muallif Ben Voigt, manba
Jadvaldagi son qiymat <0 yoki 255 bo'lsa nima bo'lishi kerak?
qo'shib qo'ydi muallif user142019, manba

4 javoblar

Ha ... otodan atomi.

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

Yana C ++ yondashuvi ...

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

char mychar = (char)fromString(mycppstring);
5
qo'shib qo'ydi

C stili atoi mavjud, lekin u int ga o'zgartiradi. O'zingiz char uchun o'zingiz tashlab chiqishingiz kerak.

C ++ uslubidagi echim uchun (bu ham xavfsizroq) siz bajarishingiz mumkin

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

char result = (char)num;
4
qo'shib qo'ydi

Ga bog'liq. Agar char imzolangan va 8 bit bo'lsa, "128" ni 10 tagacha char ga o'zgartira olmaysiz. Imzo qo'yilgan 8 bitli qiymatning maksimal ijobiy qiymati 127 tadan iborat.

Bu, albatta, pedantik javob, lekin siz buni bir nuqtada bilishingiz kerak.

1
qo'shib qo'ydi

atoi dan foydalanishingiz mumkin. Bu sizga tamsayıni keltiradi 128. Buni faqatgina char ga yozib qo'yishingiz mumkin va tugallang.

char c = (char) atoi("128");
0
qo'shib qo'ydi