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

Funkcje: atoi, itoa

Object Storage Arubacloud
0 głosów
1,570 wizyt
pytanie zadane 27 listopada 2017 w C i C++ przez Messien Nowicjusz (140 p.)
Cześć,

jestem w trakcie rozwiązywania zadania "Zabawne dodawanie Piotrusia" z łatwych na polskim SPOJu. Kod tworzę w VS 2017 w C++, gdzie przy konwersji inta na chara i odwrotnie (tak, by wprowadzonego inta z klawiatury mieć potem w tablicy znak po znaku, nie chodzi mi o szukanie kodu ASCII) używałem znanych mi z C funkcji atoi oraz itoa. VS zwracał błąd odnośnie funkcji itoa, standardowy C4996:

'itoa': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _itoa. See online help for details.

No więc mogłem ten błąd zignorować za pomocą pragma (funkcja działała wówczas bez zarzutu) lub po prostu zmienić w kodzie na _itoa. Wówczas znowu krzyknął mi, że jest to funkcja niebezpieczna i lepiej użyć _itoa_s - tak też zrobiłem, skończył krzyczeć, program się skompilował i działał jak należy. Biblioteki które zainkludowałem to <iostream> oraz <stdlib.h>.

No i niby wszystko pięknie, a jak oddaję w SPOJu zadanie za każdym razem mam błąd kompilacji, SPOJ nie rozpoznaje (a wybieram tam C++ 14 gcc 6.3) funkcji ani itoa, ani _itoa, _itoa_s - tak jakby nie znajdowała się ona w żadnej z tych dwóch bibliotek, mimo że na VS funkcja działa (znaczy musi mieć gdzieś tam swą definicję). Więc pytanie do was co z tym fantem zrobić? Czy atoi/itoa to tylko C? Bo w internecie mało na ich temat w C++, nie znalazłem też info w jakiej bibliotece się znajdują.

1 odpowiedź

+1 głos
odpowiedź 28 listopada 2017 przez criss Mędrzec (172,590 p.)

itoa w ogóle nie jest w standardzie c++. Po prostu niektóre kompilatory ją implementują, bo... tak się przyjęło? Sam nie jestem pewien. atoi już natomiast jest w standardzie, więc ona musi być i nie ma prawa z nią być żadnych problemów na każdym szanującym się kompilatorze. Zamiast itoa możesz (i tak naprawdę powinieneś) skorzystać ze standardowego std::to_string.

komentarz 28 listopada 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)

No i zamiast atoi(), std::stoi(). laugh

Tylko w przypadku std::to_string() były jakieś problemy na MinGW, a ty chyba podlinkowywałeś kiedyś jakieś materiały odnośnie tego jak to naprawić. Masz to gdzieś pod ręką jeszcze?

komentarz 28 listopada 2017 przez adrian17 Ekspert (344,860 p.)

Tylko w przypadku std::to_string() były jakieś problemy na MinGW,

Chyba tylko na starszych MinGW? No i strzelam że GCC SPOJa normalnie stoi na Linuxie, więc powinno się kompilować równie łatwo co na MSVC.

komentarz 28 listopada 2017 przez draghan VIP (106,230 p.)

Tylko w przypadku std::to_string() były jakieś problemy na MinGW, a ty chyba podlinkowywałeś kiedyś jakieś materiały odnośnie tego jak to naprawić.

Używać MinGW-w64, napisać własnoręcznie std::to_string lub zaaplikować patch, który krąży po Sieci. IMHO pierwsza opcja najlepsza.

komentarz 28 listopada 2017 przez adrian17 Ekspert (344,860 p.)

Używać MinGW-w64, napisać własnoręcznie std::to_string lub zaaplikować patch, który krąży po Sieci. IMHO pierwsza opcja najlepsza.

Albo użyć MSVC... co autor pytania już robi. Nie rozumiem problemu.

2
komentarz 28 listopada 2017 przez draghan VIP (106,230 p.)

Nie rozumiem problemu.

Eryk pytał  o sposób rozwiązania tego problemu w MinGW, stąd taka treść mojego komentarza. Czy teraz rozumiesz?

komentarz 28 listopada 2017 przez adrian17 Ekspert (344,860 p.)
(ok. Po prostu samo wspomnienie MinGW wyglądało na mocno out of context)
komentarz 28 listopada 2017 przez Eryk Andrzejewski Mędrzec (164,260 p.)

Po prostu przypomniało mi się, że taki problem występował i był fajny link jak to naprawić, więc zapytałem.

W każdym razie dzięki za odpowiedź. wink

komentarz 28 listopada 2017 przez criss Mędrzec (172,590 p.)
Tak, podlinkowałem kiedyś. Nawet kilka razy, ale więcej nie będę - adrian mi wypomniał, że lepiej zachęcać ludzi do korzystania z aktualnego kompilatora (bug występuje na jakiejś starej już wersji) zamiast łatać starocie i ma racje :D Anyway bardzo łatwo znaleźć to w Google (albo przynajmniej pytanie na SO gdzie to jest podlinkowane). Poza tym... autor pisze na VS, więc dyskusja w zasadzie bez sensu :P

Podobne pytania

0 głosów
4 odpowiedzi 1,559 wizyt
pytanie zadane 17 lipca 2018 w C i C++ przez Sic Dyskutant (8,510 p.)
+1 głos
2 odpowiedzi 271 wizyt
pytanie zadane 25 marca 2021 w C i C++ przez saju13013 Nowicjusz (230 p.)
0 głosów
1 odpowiedź 114 wizyt
pytanie zadane 1 kwietnia 2020 w C i C++ przez Hubert731 Obywatel (1,650 p.)

92,556 zapytań

141,404 odpowiedzi

319,563 komentarzy

61,942 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...