string überprüfen mit isdigit ?
-
Parameter sind doch die Variablen die ich z.b in der funktion verwende oder ? was habe ich denn konkret falsch ?? evtl eine bestimmte stelle zu zum draufhinstossen ?
-
#include <iostream> int foo; void bar( ) { // tu was mit foo, ohne parameter std::cout << foo << std::endl; } int main( ) { foo = 5; bar( ); }#include <iostream> void bar( int parameter ) { // tu was mit dem parameter std::cout << parameter << std::endl; } int main( ) { int foo = 5; bar( foo ); }greetz, Swordfish
-
naja ich glaube eines nach dem anderen ,,,fangen wir mit string prüfen an
da hänge ich noch 
-
std::find_if ...
-
Naja ich hab es nu doch mit isdigit gemacht, ob es elegant ist kann ich nicht sagen aber es funktioniert soweit anscheinend.
http://www.c-plusplus.net/forum/viewtopic-var-t-is-205731.html
-
Ehm weiß nicht was das da am Ende löst ... hab dein Problem da nicht ganz vor Augen ... generell findest du aber die erste Stelle, die kein Zeichen ist z.B. so:
const std::string sample("01234a23c"); std::string::const_iterator it(std::find_if(sample.begin(), sample.end(), std::not(std::ptr_fun(std::isdigit))); if (it == sample.end()) std::clog << "Alle Zeichen sind Zahlen!" << std::endl; else std::cerr << "Das Zeichen \'" << *it << "\' ist keine Zahl!" << std::endl;
-
Das problem war es eigentlich, ein string das 6 zeichen durch die eingabe von getnstr enthält zu überprüfen ob es eine gültige uhrzeitformat entspricht.
wie 235959 ohne irgendwelche buchstaben oder kommas drin.dieses soll später in int mit atoi umgeändert werden ich weis nicht warum aber ich vergleiche lieber im programm int werte
-
int vergleich ist auch schneller als zeichen(array!) vergleich ...
-
sagen wir nes so ich habs gehofft das es evtl so ist aber sicher wuste ich es nicht
bin froh das es funktioniert ob es nu alles richtig waage ich dennoch zu bezweifeln. wenn ich nu im classen arbeite, habe ich da jetzt mit char jalousie[128][7] gearbeitet ist es da besser mit string zu arbeiten ?? warum ??
-
(D)Evil schrieb:
Ehm weiß nicht was das da am Ende löst ... hab dein Problem da nicht ganz vor Augen ... generell findest du aber die erste Stelle, die kein Zeichen ist z.B. so:
std::string::const_iterator it(std::find_if(sample.begin(), sample.end(), std::not(std::ptr_fun(std::isdigit)));(abgesehen davon, dass du wahrscheinlich
std::not1meinst: ) hier hat man wieder das problem, dass der compiler nicht weiß, welches isdigit gemeint ist.Brusko:
der vorteil vonstd::string? du hast ein unglaublich mächtiges interface zur verfügung. es ist einfacher, zeichenketten zu vergleichen, zu ändern, oder in ihnen etwas zu suchen:std::string::const_iterator it (sample.begin() + sample.find_first_not_of("0123456789"));wenn du bei der eingabe mit trennzeichen zwischen den einzelnen stunden/minuten/sekunden-werten arbeiten würdest, wäre es (1) lesbarer und (2) wahrscheinlich auch einfacher (verständlicher) zu bearbeiten:
string time = "23:59:59"; stringstream str(time); unsigned h, m, s; str >> h; str.ignore(); str >> m; str.ignore(); str >> s; str.ignore(); if (h > 24) //fehler if (m > 59) //fehler if (s > 59) //fehleransonsten lässt sich mit ein bisschen rechnerei deine zahl auch so zerlegen:
int time = 235959; int hours = time / 10000; int minutes = (time / 100) % 100; int seconds = time % 100;du solltest das intern aber wohl tatsächlich besser einheitlich als sekunden speichern.
-
nun die zahl zerlegen brauche ich ja so nicht, ich habe mit ein time_t ein string wo z.b kommplet drin steht welcher tag und welche uhrzeit. Tag Montag beginnent mit 1 oder ebend die zeit 235959 nun will ich es später so abspeichern das z.b 1235959 steht. nicht jede sekunde und mintute extra. Ein ganze Zahl wo sogesehen alle drin ist evtl noch eine 0 oder 1 dazu für auf und ab.
Nun mus ich mir noch raussuchen wo bzw wie mann eine zahl zu dran setzt...am stringt oder am int (wenn das geht bei int)mein code wird sicherlich nicht schön sein
aber wenn er nicht "falsch" ist möchte ich es erstmal so lassen und wenn ich mehr weis von programmieren kann ich es später noch gerne umschreiben. Welches auch sicherlich passieren wird.
-
pharmacy;