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?
Fórum › C / C++
Atoi()
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
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
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;
}
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 != '
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++;
Fajn, dik, ale zrejme bude jeste zapotrebi knihovna cctype :)
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;
}
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žení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
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