String to int - atoi

0

Próbuję używać metody atoi(), i trafiam na problem w momencie, gdy chcę przekonwertować na int jeden znak ze stringa, np.

string str = "101";
int liczba = atoi(str[0].c_str());

Błąd w kompilatorze to c_str is non-class type of char. Jak więc to zrobić?

1

int(str[0] - '0')

0

Rozumiem, działa, a może mi ktoś wytłumaczyć czemu nie działa atoi?

0

A co chciałeś uzyskać pisząc str[0].c_str()?

str[0] jakiego jest typu?

0

Powinno być

str.c_str()

a nie str[0].c_str()

0
liczba = std::stoi(str);
2

Czy któryś z odpowiadających przeczytał post autora oprócz Krawca?

gdy chcę przekonwertować na int jeden znak ze stringa

Rozumiem, działa, a może mi ktoś wytłumaczyć czemu nie działa atoi?
@blazej30 str[0] zwraca jeden znak typu char a nie obiektu typu std::string, więc wywołanie .c_str() nie ma sensu. Znak nie jest obiektem i nie ma takiej metody.

0

Ok, zrozumiałem. Ale w takim razie mam inne pytanie: atoi jako parametr przyjmuje znak, jeżeli więc piszę atoi(str[0]), to podaję tam właśnie znak - więc dlaczego to też nie działa?

1 użytkowników online, w tym zalogowanych: 0, gości: 1