Nieco "hackerskie" i w uzupełnieniu tego co powiedzieli koledzy. Jeśli jesteś absolutnie pewien że w napisie są liczby w reprezentacji ASCII, to tak się składa że 4 najmłodsze bity odzwierciedlają samą liczbę. Stąd maskowanie ich da wartość :-)
#include <iostream>
int main() {
const char * napis = "1234567890";
int value = napis[5] & 0x0F;
std::cout << value << '\n';
}
Niemniej jednak o wiele łatwiej wykonać to z użyciem std::string.
Konsekwencją pracy ze stałą napisową, może być także jej bezpośrednie adresowanie. Tu połączę z maskowaniem widocznym wyżej:
#include <iostream>
int main() {
std::cout << ("1234567890"[5] & 0x0F) << std::endl;
}
Co ciekawe "w drugą stronę" także działa :-)
#include <iostream>
int main() {
std::cout << (5["1234567890"] & 0x0F) << std::endl;
}