.[ ČeskéHry.cz ].
Převod INT na STRING
Jdi na stránku 1, 2  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Folkow



Založen: 29. 07. 2007
Příspěvky: 61

PříspěvekZaslal: 24. prosinec 2007, 12:58:35    Předmět: Převod INT na STRING Odpovědět s citátem

Potřeboval bych převést nějaké číslo na řetězec, abych ho následně mohl zobrazit jako text :-X a netuším ako na to. Sad degen...

Za rady děkuji...
_________________
http://www.e-telka.cz | http://www.iphonethemeszone.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Houp



Založen: 28. 07. 2007
Příspěvky: 672

PříspěvekZaslal: 24. prosinec 2007, 13:03:43    Předmět: Odpovědět s citátem

http://nwn1.nwn2lexicon.com/compiled/function.IntToString.html

a podobné fce
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Folkow



Založen: 29. 07. 2007
Příspěvky: 61

PříspěvekZaslal: 24. prosinec 2007, 13:16:38    Předmět: Odpovědět s citátem

Seš si opravdu jistý, že je to pro Céčko? Shocked
_________________
http://www.e-telka.cz | http://www.iphonethemeszone.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
tempicek



Založen: 04. 12. 2007
Příspěvky: 62

PříspěvekZaslal: 24. prosinec 2007, 13:21:50    Předmět: Odpovědět s citátem

Houp napsal:
http://nwn1.nwn2lexicon.com/compiled/function.IntToString.html

a podobné fce


Mno, nevim, jestli mu pomuze odkaz na skriptovaci jazyk pouzivany v Neverwinterech Very Happy

Zalezi na tom, jake knihovny pouzivas. Napriklad pokud pouzivas ATL nebo MFC, je mozne pouzit tridu CString a ta ma funkce na konverzi.
Ve standardnich knihovnach se da pouzit sprintf, ktera provede konverzi do klasickeho retezce "char *". Pripadne snazsi je pouzit funkci itoa (int to ANSI string), ale ty nejsou definovany standardem, takze nejsou vsude.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 24. prosinec 2007, 13:26:50    Předmět: Odpovědět s citátem

Pokud se jedna o C++, tak treba

kód:
std::string intToString(const int x)
{
   std::ostringstream o;
   if (!(o << x)) return "ERROR";
   return o.str();
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Houp



Založen: 28. 07. 2007
Příspěvky: 672

PříspěvekZaslal: 24. prosinec 2007, 13:46:31    Předmět: Odpovědět s citátem

tak možná jsem našel něco jiného Smile

ale vím, že takové fce byly pro C inttostr apod.. nevím přesně jak byly

ale určitě funguje
char * tvujstring;
sprintf(tvujstring, "%d", tvecislo);

EDIT :
tak jsem to našel, je to
itoa() // int to ascii
http://irc.essex.ac.uk/www.iota-six.co.uk/c/g3_atoi_itoa_sprintf_sscanf.asp

ale podle toho, co tam píší, není to standardní fce, takže raději sprintf
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
OndraSej



Založen: 28. 07. 2007
Příspěvky: 767
Bydliště: Brandýs nad Labem

PříspěvekZaslal: 24. prosinec 2007, 13:52:40    Předmět: Odpovědět s citátem

houp> tak takhle to urcite nefunguje Wink

kdyz uz, tak
kód:
char buffer[32];
sprintf(buffer, "%d", cislo);


Jinak ta funkce o ktere mluvis asi bude itoa (ovsem ta je s vyhradami).
_________________
http://trionteam.net
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Folkow



Založen: 29. 07. 2007
Příspěvky: 61

PříspěvekZaslal: 24. prosinec 2007, 13:53:09    Předmět: Odpovědět s citátem

Použil jsem sprintf() a funguje to Smile, děkuji moc...
_________________
http://www.e-telka.cz | http://www.iphonethemeszone.com
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 24. prosinec 2007, 13:56:09    Předmět: Odpovědět s citátem

Houp napsal:
ale určitě funguje
char * tvujstring;
sprintf(tvujstring, "%d", tvecislo);


jednak pls pouzivej tag CODE !!!

a druhak mas to spatne
tvuj kod nutne spadne na chybnem pristupu do pameti nebo pointer tvujstring nikam neukazuje.

spravne to je

kód:
int tvecislo = 10;
char * tvujstring;
char buf[256]; // pripadne jina rozumna konstanta ktera je dost velka, aby do ni vysledek nutne vesel
sprintf(buf, "%d", tvecislo);
tvujstring = new char[strlen(buf)+1];
strcpy(tvujstring, buf);
tvujstring[strlen(buf)] = 0;
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
prost



Založen: 30. 07. 2007
Příspěvky: 109
Bydliště: cvut fel, stm

PříspěvekZaslal: 24. prosinec 2007, 14:47:05    Předmět: Odpovědět s citátem

imho by ciste pro 32bitovy integer stacilo 11 znaku (cislice a znamenko).
_________________
BbB
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Houp



Založen: 28. 07. 2007
Příspěvky: 672

PříspěvekZaslal: 24. prosinec 2007, 14:49:14    Předmět: Odpovědět s citátem

rezna napsal:

jednak pls pouzivej tag CODE !!!


CODE jsem nepoužil právě proto, že to nebyl kompletní kód, který se mi nechtělo vypisovat(což tobě chtělo Smile )

no flame, Šťastné a veselé
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Weny Sky



Založen: 28. 07. 2007
Příspěvky: 241

PříspěvekZaslal: 24. prosinec 2007, 15:13:50    Předmět: Odpovědět s citátem

jeste bych doplnil reznu.

po strcpy neni nutne nulovat posledni znak retezce, protoze strcpy ho zkopiruje .. viz popis : Copies the C string pointed by source into the array pointed by destination, including the terminating null character.

a misto sprintf pouzit snprintf, aby to bylo opravdu bezpecne Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
(CZ)genius



Založen: 28. 07. 2007
Příspěvky: 85
Bydliště: Neratovice

PříspěvekZaslal: 25. prosinec 2007, 09:11:07    Předmět: Odpovědět s citátem

Já používám itoa() a nikdy žádnej problém..

http://www.cplusplus.com/reference/clibrary/cstdlib/itoa.html

Je pravda, že to není standardní fce... pár ekvivalentů:

kód:
sprintf(str,"%d",value) //converts to decimal base.
sprintf(str,"%x",value) //converts to hexadecimal base.
sprintf(str,"%o",value) //converts to octal base.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 25. prosinec 2007, 12:11:08    Předmět: Odpovědět s citátem

(CZ)genius napsal:
Já používám itoa() a nikdy žádnej problém..

http://www.cplusplus.com/reference/clibrary/cstdlib/itoa.html

Je pravda, že to není standardní fce... pár ekvivalentů:

kód:
sprintf(str,"%d",value) //converts to decimal base.
sprintf(str,"%x",value) //converts to hexadecimal base.
sprintf(str,"%o",value) //converts to octal base.


mno ono zalezi jestli chces prevest jenom int-to-string a nebo chces ten int naformatovat nekam doprostred stringu

pokud chces to prvni pak OK

ale pokud nekdo chce vypsat treba
"Vase skore je 50."
tak je s(n)printf() tisickrat vhodnejsi, protoze v tomhle pripade psat kod

kód:
vypis("Vase skore je ");
str = preved_int_na_string(50);
vypis(str);
vypis(".");


je a) neprehledny b) nutne pomaly

a to nedejboze jestli to nebude jeste takto
kód:
str = "Vase skore je ";
str += itoa(50);
str += ".";
vypis(str);


kde se treba nutne budou kopirovat (nebo minimalne reallocovat) buffery. to je uplna silenost

nutne tedy vitezi ten sprintf() ktery je elegantni.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
(CZ)genius



Založen: 28. 07. 2007
Příspěvky: 85
Bydliště: Neratovice

PříspěvekZaslal: 25. prosinec 2007, 12:45:46    Předmět: Odpovědět s citátem

tak to je rozhodně pravda.. já jsem to pochopil jako, že potřebuje čistě nějakou funkci na převedení čísla na řetězec a to bez ohledu na budoucí použití. Je ovšem pravda, že řetězce se většinou vypisují Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Jdi na stránku 1, 2  Další
Strana 1 z 2

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna