Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Folkow

Založen: 29. 07. 2007 Příspěvky: 61
|
Zaslal: 24. prosinec 2007, 12:58:35 Předmět: Převod INT na STRING |
|
|
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. degen...
Za rady děkuji... _________________ http://www.e-telka.cz | http://www.iphonethemeszone.com |
|
Návrat nahoru |
|
 |
Houp
Založen: 28. 07. 2007 Příspěvky: 672
|
|
Návrat nahoru |
|
 |
Folkow

Založen: 29. 07. 2007 Příspěvky: 61
|
|
Návrat nahoru |
|
 |
tempicek

Založen: 04. 12. 2007 Příspěvky: 62
|
Zaslal: 24. prosinec 2007, 13:21:50 Předmět: |
|
|
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
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 |
|
 |
Weny Sky

Založen: 28. 07. 2007 Příspěvky: 241
|
Zaslal: 24. prosinec 2007, 13:26:50 Předmět: |
|
|
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 |
|
 |
Houp
Založen: 28. 07. 2007 Příspěvky: 672
|
Zaslal: 24. prosinec 2007, 13:46:31 Předmět: |
|
|
tak možná jsem našel něco jiného
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 |
|
 |
OndraSej

Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
Zaslal: 24. prosinec 2007, 13:52:40 Předmět: |
|
|
houp> tak takhle to urcite nefunguje
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 |
|
 |
Folkow

Založen: 29. 07. 2007 Příspěvky: 61
|
|
Návrat nahoru |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 24. prosinec 2007, 13:56:09 Předmět: |
|
|
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 |
|
 |
prost
Založen: 30. 07. 2007 Příspěvky: 109 Bydliště: cvut fel, stm
|
Zaslal: 24. prosinec 2007, 14:47:05 Předmět: |
|
|
imho by ciste pro 32bitovy integer stacilo 11 znaku (cislice a znamenko). _________________ BbB |
|
Návrat nahoru |
|
 |
Houp
Založen: 28. 07. 2007 Příspěvky: 672
|
Zaslal: 24. prosinec 2007, 14:49:14 Předmět: |
|
|
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 )
no flame, Šťastné a veselé _________________
 |
|
Návrat nahoru |
|
 |
Weny Sky

Založen: 28. 07. 2007 Příspěvky: 241
|
Zaslal: 24. prosinec 2007, 15:13:50 Předmět: |
|
|
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  |
|
Návrat nahoru |
|
 |
(CZ)genius
Založen: 28. 07. 2007 Příspěvky: 85 Bydliště: Neratovice
|
Zaslal: 25. prosinec 2007, 09:11:07 Předmět: |
|
|
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 |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 25. prosinec 2007, 12:11:08 Předmět: |
|
|
(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 |
|
 |
(CZ)genius
Založen: 28. 07. 2007 Příspěvky: 85 Bydliště: Neratovice
|
Zaslal: 25. prosinec 2007, 12:45:46 Předmět: |
|
|
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í  |
|
Návrat nahoru |
|
 |
|