• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Konwersja przez itoa (c++)

VPS Starter Arubacloud
0 głosów
1,510 wizyt
pytanie zadane 17 lipca 2018 w C i C++ przez Sic Dyskutant (8,510 p.)

Witam!

Proszę o podpowiedź dlaczego funkcja jest nie widoczna w programie.

Chcę utworzyć konwersje liczb dziesiętnych na dziesiętne, szesnastkowe i dwójkowe za pomocą funkcji itoa. Problem polega na tym, że kompilator nie widzi tej funckji. W dodatku kod utworzony na stronach jest niestety błędny.

#include <iostream>
#include <cstdio>
 
int main()
{
          int value, nr;
          char sign[15];
          std::cout << "Wybierz opcje\n1.Dziesiątkowy\n2.Binarny\n3.Szesnastkowy\n4.Zakończ\n";
          std::cin >> nr;
          while( nr == 4)
          {
                  switch(nr)
                  {
                          case 1:
                                  std::cout << "Podaj liczbę: "; std::cin >> value;
                                  std::cout << itoa(value, sign, 10);
                          break;
                          case 2:
                                  std::cout << "Podaj liczbę: "; std::cin >> value;
                                  std::cout << itoa(value, sign, 2);
                          break;
                          case 3:
                                  std::cout << "Podaj liczbę: "; std::cin >> value;
                                  std::cout << itoa(value, sign, 16);
                          break;
                  }//switch
          }//while
  
 }

 

4 odpowiedzi

0 głosów
odpowiedź 17 lipca 2018 przez VirtualMember Pasjonat (15,790 p.)

Co do błędu to prawdopodobnie brakuje Ci tego includa <cstdlib> (stdlib.h)

link: http://www.cplusplus.com/reference/cstdlib/itoa/

#include <cstdlib>

 

0 głosów
odpowiedź 17 lipca 2018 przez Ukasz Użytkownik (960 p.)
Spróbuj z biblioteką <cstdlib>
komentarz 17 lipca 2018 przez Sic Dyskutant (8,510 p.)

Problem jest w tym, że już tego próbowałem. Dalej nie działa:

kod.cpp:16:38: error: ‘itoa’ was not declared in this scope
     std::cout << itoa(value, sign, 10);

 

komentarz 17 lipca 2018 przez Ukasz Użytkownik (960 p.)
W jakim IDE pracujesz? Możliwe że to wina kompilatora. Nie wszystkie obsługują funkcję itoa, aczkolwiek pierwszy raz się z takim czymś spotykam...
komentarz 17 lipca 2018 przez Sic Dyskutant (8,510 p.)
g++5 na linuxie .
0 głosów
odpowiedź 17 lipca 2018 przez mokrowski Mędrzec (155,460 p.)

Już Ci odpowiedział @VirtualMember ale jak widzę sam nie doczytał źródła które podał. Gdzieś na środku tej strony masz:

This function is not defined in ANSI-C and is not part of C++, but is supported by some compilers.

Mówiąc wprost. Lepszy jest inny sposób. Np ten: https://en.cppreference.com/w/cpp/string/basic_string/stol

 

komentarz 17 lipca 2018 przez Hiskiel Pasjonat (22,830 p.)
Chodziło o konwersję systemów liczbowych.
komentarz 17 lipca 2018 przez mokrowski Mędrzec (155,460 p.)
A argument base widzisz?
komentarz 17 lipca 2018 przez Hiskiel Pasjonat (22,830 p.)
W takim razie przepraszam, mój błąd.
komentarz 17 lipca 2018 przez VirtualMember Pasjonat (15,790 p.)
Dlaczego uważasz, że nie doczytałem źródła?
komentarz 17 lipca 2018 przez Hiskiel Pasjonat (22,830 p.)
Wyjaśnił przecież.
komentarz 17 lipca 2018 przez VirtualMember Pasjonat (15,790 p.)
Która część to te wyjaśnienie?
komentarz 17 lipca 2018 przez Hiskiel Pasjonat (22,830 p.)
[...] {Tutaj ten cytat} Mówiąc wprost. Lepszy jest inny sposób. [...]
komentarz 17 lipca 2018 przez VirtualMember Pasjonat (15,790 p.)
W jaki sposób twierdzenie, że jest inny sposób uzasadnia to, że nie doczytałem źródła?
komentarz 17 lipca 2018 przez mokrowski Mędrzec (155,460 p.)

@VirtualMember No to jeszcze raz: Nie doczytałeś źródła że ta funkcja jest niestandardowa i może nie występować w danym kompilatorze. Na takich funkcjach nie należy polegać. Masz to na środku strony którą podałeś ( http://www.cplusplus.com/reference/cstdlib/itoa/ ). 

This function is not defined in ANSI-C and is not part of C++, but is supported by some compilers.

Ta funkcja nie jest zdefiniowana w ANSI-C i nie jest częścią C ++, ale jest obsługiwana przez niektóre kompilatory.

Zupełnie inną sprawą jest także to że sama funkcja wywodzi się z C a to może być jeszcze bardziej ryzykowne jeśli chodzi o jej użycie w kontekście strumieni... 

komentarz 17 lipca 2018 przez VirtualMember Pasjonat (15,790 p.)

W dalszym ciągu nie wskazałeś rozsądnego powodu by tak sądzić poza "widzimisię"

komentarz 17 lipca 2018 przez VirtualMember Pasjonat (15,790 p.)
Nie musisz mi tłumaczyć, że ta funkcja wywodzi się z C, próbuję po prostu Tobie pokazać, że błędnie założyłeś, iż czegoś nie doczytałem a tłumacząc się z tego, podajesz argumenty niezwiązane z tym faktem (powołując się na własności itoa).
komentarz 17 lipca 2018 przez Sic Dyskutant (8,510 p.)
Po co ta kłótnia skoro obaj nie wnieśliście więcej niż sam zdołałem zebrać informacji ?
komentarz 17 lipca 2018 przez VirtualMember Pasjonat (15,790 p.)

@mokrowski wywołał mnie jakobym powoływał się na źródła, których nawet nie czytam, co jest niesprawiedliwą bzdurą stąd naturalnie spytałem o podstawy takiego zachowania. Nie nazwałbym tego kłótnią, a raczej respektowaniem konsekwencji słów.

komentarz 18 lipca 2018 przez Sic Dyskutant (8,510 p.)
W takim razie wymiane nie zgodną z tematem prowadźcie prywatnie, ponieważ nie zamierzam wyszukiwać istotnych treści pomiędzy wyminą zdań, która donikąd nie prowadzi.
1
komentarz 18 lipca 2018 przez mokrowski Mędrzec (155,460 p.)

@Sic, ja skończyłem.

@VirtualMember, z całą pewnością itoa(...) nie jest powodem dla którego warto tracić czas na bezsensowne dyskusje. Przeczytaj uwagi ze zrozumieniem bez emocjonalnego zarzucania komukolwiek złej woli.

1
komentarz 18 lipca 2018 przez VirtualMember Pasjonat (15,790 p.)
Cały czas chłodno patrzę na dyskusję i w dalszym ciągu nie dostrzegam logicznego powodu Twojego osądu. Czy sprawa jest błaha czy wielce poważna, bzdur na czyiś temat wygadywać nie można. Na przyszłość po prostu waż słowa a nie będziesz miał takich problemów. Pozdrawiam.
0 głosów
odpowiedź 17 lipca 2018 przez VirtualMember Pasjonat (15,790 p.)

Jeśli chcesz jakieś ciekawe podejście do zamiany liczb to jeszcze polecę:

LINK

komentarz 17 lipca 2018 przez Sic Dyskutant (8,510 p.)
Dziękuję, jednak wole rozwiązać problem który dotyczy funkcji wbudowanej.

Podobne pytania

0 głosów
0 odpowiedzi 311 wizyt
pytanie zadane 12 maja 2020 w C i C++ przez Gurred Nowicjusz (240 p.)
0 głosów
1 odpowiedź 183 wizyt
pytanie zadane 14 sierpnia 2016 w C i C++ przez thekibi27 Bywalec (2,110 p.)
0 głosów
1 odpowiedź 443 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...