Forum » Programiranje » [cpp]Kako ugotoviti koliko zapisov je v arrayu?
[cpp]Kako ugotoviti koliko zapisov je v arrayu?
*ziga* ::
Zivjo.
Sam sem si na hitro spisal funkcijo explode s pomocjo knjiznice string in zdaj me matra kako ugotoviti koliko rezultatov je vrnilo...
Zdaj ena resitev bi bila da bi pristel vse deltimerje in dodal 1
Ali pa da bi inkrementiral doloceno globalno spremljivko v loopu ampak jaz iscem bolj 'fancy' resitev.
Tule je vsa koda in seveda so tudi predlogi kako zbolsat to kodo dobrodosli.
LP
Sam sem si na hitro spisal funkcijo explode s pomocjo knjiznice string in zdaj me matra kako ugotoviti koliko rezultatov je vrnilo...
Zdaj ena resitev bi bila da bi pristel vse deltimerje in dodal 1
Ali pa da bi inkrementiral doloceno globalno spremljivko v loopu ampak jaz iscem bolj 'fancy' resitev.
Tule je vsa koda in seveda so tudi predlogi kako zbolsat to kodo dobrodosli.
#include <iostream> #include <string> using namespace std; string * explode(string str, string deltimer); int main () { string * resp; resp = explode("test1:test2:test3", ":"); return 0; } string * explode(string str, string deltimer){ int DelCount=0; int ArrayPos=0; int DeltPos=0; int CharPos=0; int ToRaise=0; string TempStr; for(int i=0; i < str.size(); i++){ if(str.at(i) == *deltimer.c_str()) DelCount++; } string * output; output = new string[DelCount+1]; while(str.find(deltimer,CharPos) != string::npos){ DeltPos = str.find(deltimer,CharPos); ToRaise = DeltPos-CharPos; TempStr = str.substr(CharPos,ToRaise); output[ArrayPos] = TempStr; CharPos += ToRaise+1; ArrayPos++; } output[ArrayPos] = str.substr(CharPos); return output; }
LP
technolog ::
Ena opcija je da daješ rezultate v STL vector, namesto v array stringov. Pa tudi pohitriš lahko kodo, ker ti prej ni treba preštet, koliko bo rezultatov.
Drgač pa tole je dost gnila koda, to funkcijo je mogoče napisat v recimo max petih vrsticah (če vzamemo da je delimiter lahko samo en znak).
Drgač pa tole je dost gnila koda, to funkcijo je mogoče napisat v recimo max petih vrsticah (če vzamemo da je delimiter lahko samo en znak).
*ziga* ::
@repo
sizeof vedno vrne 4 neglede na vsebino.Drugace pa to funckijo sem spisal sam...
@technolog
Ja razmisljal sem ze v vectorjih ampak hocem cimbolj omejiti uporabo drugih knjiznic, da bi reduciral velikost exeja.
Drugace pa lahko pokazes kako se to spise v 5ih vrsticah...
sizeof vedno vrne 4 neglede na vsebino.Drugace pa to funckijo sem spisal sam...
@technolog
Ja razmisljal sem ze v vectorjih ampak hocem cimbolj omejiti uporabo drugih knjiznic, da bi reduciral velikost exeja.
Drugace pa lahko pokazes kako se to spise v 5ih vrsticah...
Mavrik ::
Vector je v standardni C++ knjižnici pa se ga praktično _vedno_ uporablja namesto arrayev (Disclaimer: common sense applies) glih zaradi problemov, ko jih imaš ti.
Drugače neke pametne rešitve o tem kako prešteti število elementov v arrayu za C/C++ ni, saj jezika ne sledita velikosti alociranega prostora in ne moreš ugotoviti kdaj boš šel čez mejo če nimaš ending delimiterja (ki ti naredi več problemov in štale kot je uporaba STL containterjev kot je Vector).
Drugače neke pametne rešitve o tem kako prešteti število elementov v arrayu za C/C++ ni, saj jezika ne sledita velikosti alociranega prostora in ne moreš ugotoviti kdaj boš šel čez mejo če nimaš ending delimiterja (ki ti naredi več problemov in štale kot je uporaba STL containterjev kot je Vector).
The truth is rarely pure and never simple.
*ziga* ::
Sem na netu nasel tole kodo
In deluje OK - vector.size() vrne pravilo stevilko stvari.
LP
void StringExplode(string str, string separator, vector<string>* results){ int found; found = str.find_first_of(separator); while(found != string::npos){ if(found > 0){ results->push_back(str.substr(0,found)); } str = str.substr(found+1); found = str.find_first_of(separator); } if(str.length() > 0){ results->push_back(str); } }
In deluje OK - vector.size() vrne pravilo stevilko stvari.
LP
technolog ::
Tole je ok koda, deluje tudi če je separator večznakovni. Če rabiš samo en znak, se da kodo neprimerno pohitrit.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Zanka z zajemanjem števkOddelek: Programiranje | 1139 (824) | misticnimrk |
» | [JAVA] String problem!Oddelek: Programiranje | 1682 (1379) | Sergio |
» | [NALOGA] Java: RekurzijaOddelek: Programiranje | 972 (786) | Spura |
» | C++ preštej število enkOddelek: Programiranje | 1309 (1092) | kihc |
» | razložitev nekaterij elementov v visual studio 05Oddelek: Programiranje | 2121 (1926) | darkolord |