Atoi() – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Atoi() – C / C++ – Fórum – Programujte.comAtoi() – C / C++ – Fórum – Programujte.com

 

Miroslav Kajan0
Věrný člen
6. 12. 2006   #1
-
0
-

Mám problém s fcí v STL - atoi();
Myslel jsem, že atoi() dokáže např. ve větě(řetězci) vyhledat všechny int a vypsat je. Atoi() vypíše pouze první.
Neexistuje taková fce která by vypsala všechny int v řetězci?

Nahlásit jako SPAM
IP: ...–
Zápisky z dění na FB (momentálně ve vývoji): http://fbpd.ic.cz/
Matěj Pácha0
Super člen
6. 12. 2006   #2
-
0
-

Možná

for(i=0;i<=delka_retezce(retezec);i++)
{
int_pole[i]=atoi(retezec[i]);
}

Ale funkce mě nenapadá. Sorry za ty nešťastné názvy :-P

Nahlásit jako SPAM
IP: ...–
Ajem tíčr, andrgraund tíčr!
Pedro0
Stálý člen
6. 12. 2006   #3
-
0
-

To midin:



#include <cstring>
#include <iostream>
using namespace std;
void VypisCisla(char * str)
{
int i = 0;
while(str[i])
{
if (isdigit(str[i])) cout << str[i];
else cout << ", ";
}
return;
}


funkcia atoi() ma problemy sama so sebou ... ale je celkom dobre popisana na linuxsoft.cz

Nahlásit jako SPAM
IP: ...–
Vsetci ste blazni, to len ja som lietadlo
Jura_0
Stálý člen
6. 12. 2006   #4
-
0
-

To PaLaDiN: Spise, ale stale to neresi problem se zapornymi cisly.



#include <cstring>
#include <iostream>
using namespace std;
void VypisCisla(char * str)
{
int i = 0;
while(str[i])
{
if (isdigit(str[i])) cout << str[i];
else cout << ", ";
i++;
}
return;
}

Nahlásit jako SPAM
IP: ...–
Martin Šmarda0
Návštěvník
6. 12. 2006   #5
-
0
-

Pokud vás zajímá funkce atoi() tak její prototyp je níže.

#include <iostream.h>


long int atoi_m(const char* co){
long int cislo = 0;
char z = 1;
char s = 10;

if (*co == '-'){
++co;
z = -1;
cislo = -0;
}

if (*co == '0'){
++co;
if (*co == 'x' || *co == 'X'){
s = 16;
++co;
}
else{
s = 8;
}
}

while(*co != '

Nahlásit jako SPAM
IP: ...–
Život je pes, a pes je nejlepš přítel člověka!
Pedro0
Stálý člen
6. 12. 2006   #6
-
0
-

To Jura_: jo promin ... ja zapomnel inkrementovat ...
a ok ...



if (str[i-1] == '-' && isdigit(str[i])) cout << str[i - 1] << str[i];
else if (isdigit(str[i])) cout << str[i];
else cout << ", ";
i++;

Nahlásit jako SPAM
IP: ...–
Vsetci ste blazni, to len ja som lietadlo
Miroslav Kajan0
Věrný člen
6. 12. 2006   #7
-
0
-

Fajn, dik, ale zrejme bude jeste zapotrebi knihovna cctype :)

Nahlásit jako SPAM
IP: ...–
Zápisky z dění na FB (momentálně ve vývoji): http://fbpd.ic.cz/
Jura_0
Stálý člen
6. 12. 2006   #8
-
0
-

To PaLaDiN: Zase mi to neda, ale zasahujes mimo rozsah pole(mam na mysli - str[i-1]).
Aby toho nebylo malo, tak prialdam svoje reseni:



#include <cstdlib>
#include <iostream>

using namespace std;
struct TMidin: public unary_function<char, void>
{
TMidin(ostream & o): os(o), _isNegative(false) {};
void operator()(char c) {
if(isdigit(c))
if (_isNegative) os << '-' << c << ' ';
else os << c << ' ';
_isNegative = (c =='-')?true:false;
};
ostream & os; // soubor, obrazovka, atd..
bool _isNegative;
};
int main(int argc, char *argv[])
{
std::string str = "2+5-3=9";
for_each(str.begin(), str.end(), TMidin(cout));
system("PAUSE");
return EXIT_SUCCESS;
}

Nahlásit jako SPAM
IP: ...–
jenda
~ Anonymní uživatel
18 příspěvků
12. 12. 2006   #9
-
0
-

To Jura_: je pekny, ze jsi pouzil for_each, protoze ten nema ve standardu omezeni na vedlejsi efekty, resp. ze je mozne u for_each menit membry, aniz by se to dotklo standardu:)

Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 28 hostů

Podobná vlákna

Nejde atoi() ? — založil ingiraxo

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý