CString -> int
-
Hallo,
ich arbeite mit Strings, die so aussehen:
// 02:30.1 // 04:15.6 // .. // 07:45.4 d.h. 7 Minuten: 45 Sekunden. 4/10 SekundenJetzt muss ich die ganaue Sekundenzahl herausfinden:
(7 * 60) + 45 + 0.4 = 465,4 Sekunden oder 4654 (1/10) Sekunden.Ich habe schon eine Lösung gefunden, aber die ist meiner Meinung nicht besoders gut:
TCHAR *time = str.GetBuffer(255); // z.B. 02:30.1 CString x, y, z; x.Insert(0, time[0]); // 0 x.Insert(1, time[1]); // 2 y.Insert(0, time[3]); // 3 y.Insert(1, time[4]); // 0 z.Insert(0, time[6]); // 1 TCHAR *k = x.GetBuffer(255); TCHAR *l = y.GetBuffer(255); TCHAR *m = z.GetBuffer(255); int a = atoi(k); int b = atoi(l); float c = atof(m); j = ((a * 60) + b + (c/10)) * 10; // ErgebnisMich würde es gern interessieren, ob's auch anders geht,
Merci
-
GetBuffer ohne ReleaseBuffer == meory leak (nur so zur info)

warum nicht so:
j = atoi((const char*)str.Left(2))*60 + atoi((const char*)str.Mid(3,2)) + atoi((const char*)str.Right(1)/10) * 10;
-
CMatt schrieb:
GetBuffer ohne ReleaseBuffer == meory leak (nur so zur info)

[/cpp]stimmt doch garned
-
Stimmt ja wohl

Der Destruktor von CString kümmert sich zwar um alles, aber so ist es trotzdem (theoretisch) ein Memory Leak (und ein Resourcenfresser noch dazu
)).Grüße Rapha
-
atoi(CString)
hätte auch funntioniert
-
@Unix-Tom: Wie meinst du das? Der String enthält nicht nur Zahlen
-
Ok, so klappt's:
CString minuten = str.Left(2); CString sekunden = str.Mid(3,2); CString zehntel = str.Right(1); j = ((((atoi(minuten) * 60) + atoi(sekunden)) * 10) + atoi(zehntel));Nochmals Danke!
-
Rapha schrieb:
Stimmt ja wohl

Der Destruktor von CString kümmert sich zwar um alles, aber so ist es trotzdem (theoretisch) ein Memory Leak (und ein Resourcenfresser noch dazu
)).Grüße Rapha
was is denn der unterschied zwischen nem praktischen und nem theoretischen memoryleak?

-
EdiRitter schrieb:
Ok, so klappt's:
j = ((((atoi(minuten) * 60) + atoi(sekunden)) * 10) + atoi(zehntel));Da ist aber noch ein Fehler drin...
[edit]...oder auch nicht, wenn das Ergebnis in Zehnteln sein soll.
[/edit]
-
Sovok schrieb:
Rapha schrieb:
Stimmt ja wohl

Der Destruktor von CString kümmert sich zwar um alles, aber so ist es trotzdem (theoretisch) ein Memory Leak (und ein Resourcenfresser noch dazu
)).Grüße Rapha
was is denn der unterschied zwischen nem praktischen und nem theoretischen memoryleak?

Weil dieser Speicher erst beim verlassen des Gültigkeitsbereiches wieder freigegeben
wird, und somit wird Speicher von CString behalten der nicht mehr benötigt wird.
-
SirLant schrieb:
Weil dieser Speicher erst beim verlassen des Gültigkeitsbereiches wieder freigegeben
wird, und somit wird Speicher von CString behalten der nicht mehr benötigt wird.Genau
