Zamiana stringu na int.

0

Do zamiany używam funkcji atoi(), jednak mój problem polega na tym, że wprowadzam dane jako string np."0123" i tą wartość chce przekazać jako int, w rezultacie otrzymuje "123". Funkcja działą poprawnie tylko jeśli z przodu stoi zero (jeśli wprowadzam dane "na sztywno").
Chciałbym zrobić coś takiego :)

int liczba = 123;
funkcja("0+liczba"); //równoważne : funkcja(0123);

Jest jakaś opcja, żeby wcisnąć to zero na początku ?

1

przecież 0123 to jest tyle samo co 123. int przechowuje wartość, string przechowuje znaki.

0

A nie możesz do funkcji przekazać stringa i w funkcji zrobić konwersje ? Tylko i tak jak przekonwertujesz stringa '0123' na int to zwróci Ci 123. Może jakoś bardziej szczegółowo opisz problem co chcesz osiągnąć i co ta funkcja ma robić.

0

funkcja("0+liczba"); nie jest absolutnie równoważne funkcja(0123)

Prefiks 0 w literale liczbowym oznacza, że liczba podana jest w systemie ósemkowym. Po zamianie napisu w odpowiednim systemie na liczbę podajesz ją do funkcji. Żeby uprościć sprawę, możesz przyjąć, że zmienna liczbowa w C / C++ nie ma określonego systemu. Po prostu jest.

W C++ napis w postaci liczby ósemkowej możesz zamienić na liczbę za pomocą std::oct.

0

Tą tajemniczą funkcją jest :
int mkdir(const char pathname, mode_t mode);
Na dobrą sprawe to nie jest typ int tylko mode_t, a ja wprowadzam dane jako argumenty funkcji main() dlatego musze wpisac np. 0777
Jeśli przekazuje to jako string albo int(bez zera) funkcja nie działa poprawnie.
Czyli pytanie brzmi jak char
podmienić na mode_t.

2

Wartość, którą ciebie interesuje zwróci wywołanie: strtol(napis, NULL, 8);

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