kleine frage zum auslesen einer datei mit ifstream.
-
Tag Leute,
also iregndwie stehe ich gerade aufm Schlauch, ich habe mit einer Funktion datein in eine Datei geschrieben und zwar so:nickname // erste Zeile passwort // zweite Zeileund nun möchte ich mit einer anderen Funktion diese Datei wieder auslesen und nickname und password jeweils in einen char array[ 16 ] speichern. hm aber irgendwie weiß ich gerade icht wie ich das machen soll, wär toll wenn mir mal einer nen Tip oder Lösungsvorschlag mahcen könnte.
Gruß Tobi.
-
getline sollte dir gute Dienste leisten...
Gruß
zeigerzeiger
-
ja schon aber irgendwie komm ich dmait noch net ganz ans Ziel. Hier ist erst mal meine zusammen gebaute funktion:
void loadLastSavedUserData( HWND hEdit_Nick, HWND hEdit_Pw ) { ifstream load; bool isNickname = true; char szBuffer[ 32 ]; char szNick[ 16 ]; char szPw[ 16 ]; szBuffer[ 0 ] = 0; load.open( "lastuser.dat", ios::in ); if( !load.good( ) ) { return; } // ***** read out the full data ***** load.getline( szBuffer, sizeof( szBuffer ) ); load.close( ); // ***** split the string into nick and pw ***** szNick[ 0 ] = 0; szPw[ 0 ] = 0; int j = 0; for( int i = 0; i < (int)strlen( szBuffer ); i++ ) { // ***** get the nickname ***** if( isNickname ) { if( szBuffer[ i ] == '/' ) { szNick[ i ] = '\0'; isNickname = false; continue; } else { szNick[ i ] = szBuffer[ i ]; } } // ***** get the password ***** else if( !isNickname ) { szPw[ j ] == szBuffer[ i ]; j++; } } // ***** insert \0 to both strings strcat( szPw, "\0" ); // ***** finaly set the editbox texts ***** SendMessage( hEdit_Nick, WM_SETTEXT, 0, (long)szNick ); SendMessage( hEdit_Pw, WM_SETTEXT, 0, (long)szPw ); }den nickname liest sie hervorragend aus doch das passwort wird nicht richtig ausgelesen der string bleibt immer leer. wieso ?
Gruß Tobi.
-
T0bi schrieb:
den nickname liest sie hervorragend aus doch das passwort wird nicht richtig ausgelesen der string bleibt immer leer. wieso ?
Weil, wie man am Namen erkennen kann, getline eine Zeile ausliest. Du wendest getline genau einmal an und schließt die Datei danach.
Preisfrage: Wieviele Zeilen wurden gelesen?

-
boaahr manno konnte ja mal nur wieder mir passieren ^^
doofer anfänger fehler :), nicht == sondern = *g*Trotzdem dnake.
PS: hatte das schon so geändert das is alles in einer zeile hab.
-
void load_userdata(HWND hEdit_Nick, HWND hEdit_Pw) { std::ifstream file_stream("userdata.dat", std::ios::in); if (!file_stream) return; std::string tmp; std::getline(file_stream, tmp); ::SendMessage(hEdit_Nick, WM_SETTEXT, 0, reinterpret_cast<LRESULT>(tmp.c_str())); std::getline(file_stream, tmp); ::SendMessage(hEdit_Pw, WM_SETTEXT, 0, reinterpret_cast<LRESULT>(tmp.c_str())); } void save_userdata(HWND hEdit_Nick, HWND hEdit_Pw) { std::ofstream file_stream("userdata.dat", std::ios::in); if (!file_stream) return; std::size_t len = ::SendMessage(hEdit_Nick, WM_GETTEXTLEN, 0, 0) + 1; char* arr = new char[len]; ::SendMessage(hEdit_Nick, WM_GETTEXT, len, reinterpret_cast<LRESULT>(arr)); file_stream << arr << std::endl; delete [] arr; len = ::SendMessage(hEdit_Pw, WM_GETTEXTLEN, 0, 0) + 1; arr = new char[len]; ::SendMessage(hEdit_Pw, WM_GETTEXT, len, reinterpret_cast<LRESULT>(arr)); file_stream << arr << std::endl; delete [] arr; }allerdings solltest du schon sehen das du das PW verschlüsselst

-
T0bi schrieb:
... char szBuffer[ 32 ]; char szNick[ 16 ]; char szPw[ 16 ]; ...Warum nur ? Warum ?

=> std::string macht das alles besser für Dich.
Gruß,
Simon2.