Problem mit CString <-> int

saibot83

Grünschnabel
Hallo,

ich habe eine MFC-Anwendung mit einem Edit-Feld, in welches eine Uhrzeit in der Form hh:mm:ss eingegeben wird. Der Datentyp ist CString. Nun will ich die Stunden, Minuten und Sekunden in eine int-Variable schreiben.

Zuerst wollte ich dann die ersten 2 Buchstaben in eine extra Variable kopieren und diese dann per atoi umwandeln. Leider hat das nichtmal ansatzweise funktioniert.

Code:
CString EingZeit, AusgZeit, stunden;
int a;

UpdateData(TRUE);
EingZeit=m_Edit1;      //m_Edit1 ist vom Typ CString und hat die Form hh:mm:ss

strncpy(stunden, EingZeit, 2);

a=atoi(stunden);

Eigentlich dachte ich dass die Funktionen strcpy, strcat usw zur Klasse CString gehören, aber völlig unverständlich find ich es jetzt, dass diese Funktionen Char als Argumente verlangen. Und die Hilfe ist in dem Fall nicht wirklich hilfreich.

Wie kann ich das sonst lösen?

Danke :)
 
Hi,
diese Funktionen gehören eben nicht zur CString-Klasse. Das sind reine c-Funktionen. Du mußt deinen CString anders parsen (ich gehe mal von deiner Vorgabe aus)
Code:
CString stunde, minute, sekunde;
int std,min,sek;

stunde=left(EingZeit,2);
minute=mid(EingZeit,3,5);
sekunde=right(EingZeit,2);

std=atoi(stunde);
min=atoi(minute);
sek=atoi(sekunde);
Natürlich kann man das auch noch im Aufruf vereinfachen
Code:
std=atoi(Left(EingZeit,2);

Mfg

langer
 
ah super, vielen Dank für die schnelle Antwort!

Jetzt aber noch ne dumme Frage...was muss ich dann oben bei include noch rein schreiben?
Hab jetzt noch den Fehler error C2065: 'left' : nichtdeklarierter Bezeichner

Bin da leider absoluter Anfänger :(
 
also so gehts:

Code:
stunde=EingZeit.Left(2);
minute=EingZeit.Mid(3,5);
sekunde=EingZeit.Right(2);


möglicherweise liegt das daran dass ich an der FH noch mit der uralt-Version 6.0 arbeite und nicht mit der .NET
 
Zurück