konwersja int to *char

Odpowiedz Nowy wątek
2014-12-23 20:50
0

CZy może mi ktoś doradzić co tu jest nie tak ? bo wyczytałem na forum by użyć itoa do zamiany int na char, ale niestety program wtedy wyswietla mi 0.

char *wartosc;
 
DuzaLiczba::DuzaLiczba(int liczba){
        int b = 0;
 
        while(liczba=liczba/10)b++;
         wartosc = new char (b);
 
        itoa(liczba,wartosc,10);
            cout<<wartosc;
 
    }

Natomiast gdy używam konwersji niejawnej

 
int b = 0;
 
        while(liczba=liczba/10)b++;
         wartosc = new char (b);
 
        wartosc =(char*) liczba ;
 
            cout<<wartosc;

nic mi nie wyświetla :/

Pozostało 580 znaków

2014-12-23 20:55
0
std::to_string()

http://www.cplusplus.com/reference/string/to_string/

edytowany 1x, ostatnio: spartanPAGE, 2014-12-23 20:55

Pozostało 580 znaków

2014-12-23 20:59

W pierwszym kodzie źle liczysz rozmiar bufora (zawsze o dwa znaki, dla liczb ujemnych - o trzy);
W drugim przypadku traktujesz liczbę jako numer komórki w pamięci komputera i próbujesz stamtąd wyświetlić napis.
Zastanów się nad:

DuzaLiczba::DuzaLiczba(int liczba)
  {
   wartosc=new char[(int)log10(abs(liczba+0.5))+(liczba<0)+2];
   itoa(liczba,wartosc,10);
   cout<<wartosc; 
  }

ewentualnie nad:

DuzaLiczba::DuzaLiczba(int liczba)
  {
   wartosc=new char[12]; // dowolna liczba się zmieści i jeszcze na znak końca starczy
   itoa(liczba,wartosc,10);
   cout<<wartosc; 
  }

lub nawet:

DuzaLiczba::DuzaLiczba(int liczba)
  {
   cout<<liczba;
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 2x, ostatnio: _13th_Dragon, 2014-12-23 21:00

Pozostało 580 znaków

2014-12-24 09:23
0

może się wygłupi ale mógłbyś wyjaśnić co się dzieje w tym fragmencie ?

 abs(liczba+0.5))+(liczba<0)+2

abs - warto bezwzgledna, ale skąd się bierze ta cała reszta ?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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