config.cfg Zeilenweise auslesen udn zeilen an einem zeichen teilen



  • Jo, ich möchte mir einen kleinen gamelaunche rschreiebn, der vor jedem spielstart udn anch jedem spielende jeweils ein programm aufruft. das funzt auch. aber ich möchte ihn möglichst variabel gestalten udn nicht jedes spiel statisch in den code einfügen.

    Dazu möchte ich mir eine config datei machen, die das folgende schema hat:

    1)Battlefield Bad Company 2*E:\\Program Files (x86)\\Electronic Arts\\Battlefield Bad Company 2\\BFBC2Updater.exe
    2)Pro Evolution Soccer 2010*E:\\Program Files (x86)\\KONAMI\\Pro Evolution Soccer 2010\\pes2010.exe
    3)Anno 1404*E:\\Program Files (x86)\\Ubisoft\\Related Designs\\ANNO 1404\\Anno4.exe
    

    mein code zum auslesen sieht folgendermaßen aus:

    std::ifstream ifs;
        ifs.open("C:\\Users\\Martin\\Documents\\Visual Studio 2010\\Projects\\GamesAndMore\\GamesAndMore\\Config\\Config.cfg");
    
        while ( ! ifs.eof() ) {
        	std::string aLine;
        	std::getline(ifs, aLine);
    		aLine = aLine + "\n";
    
    		const char* Line = aLine.c_str();
    		std::string Name; 
    
    		for (int i; i <= sizeof(Line); i=++)
    		{
    			if(Line[i] == 42)
    			{
    				Name = Name + "\n";
    				i = sizeof(Line) + 1;
    			}
    			else{
    				Name = Name + Line[i];
    			}
    		}
    
    		std::cout<<Name;
    
        }
    
        ifs.close();
    

    die zeilen der config sollen jeweils an dem * geteilt werden, der teil davor ausgegeben udn der teil dahinter in einem stringarray gespeichert werden( letzteres noch nicht umgesetzt, will erstmal das zerteilen hinbekommen, daran hakts ja schon^^ )

    die ausgabe ist nämlcih immer nur "1)Bat"... ka, warum^^

    ps: die 42 hab ich aus ner ASCII zeichentabelle, ka obs so stimmt
    PPS: wenn ich die sizeof(Line) abfrage erhalte ich als wert 4444 oO
    PPPS: ich arbeite in ner .Net umgebung, daher die frage hier und net nur bei c++^^ (auch wenn ich gerne bei c++ bleiben würde, wenns nicht geht funzt auch .Net)



  • ps: die 42 hab ich aus ner ASCII zeichentabelle, ka obs so stimmt

    Was solls denn sein?
    Edit: Ich nehme an, es soll ein * sein. Das kannst Du bequem wie folgt schreiben:

    if (Line == '*')
    

    PPS: wenn ich die sizeof(Line) abfrage erhalte ich als wert 4444 oO

    sizeof(Line) ergibt genau 4, und zwar weil die Grösse des Zeigers 4 ist. Wenn Du die Länge des Strings benötigst, kannst Du aLine.size() aufrufen.

    PPPS: ich arbeite in ner .Net umgebung, daher die frage hier und net nur bei c++^^ (auch wenn ich gerne bei c++ bleiben würde, wenns nicht geht funzt auch .Net)

    Dein Code ist [i]reines* C++ und hat absolut nichts mit .NET zu tun. Auch in VS.NET oder den Nachfolgern (inkl. Express Editions) kann auch für / mit C++ entwickelt werden. ➡ Falsches Forum. Korrekt wäre C++

    Edit2:
    Ausserdem: Guck Dir aLine.find(..) an und lass den Code mit const char* weg, der ist völlig unnötig.

    Simon



  • nja, damit meinte ich ich könnte auch .Net einbauen, wenns dmait einfach er ginge... das mit "*" hab ich probiert, meinte er, dass eine const char nich zu einer int konvertiert werden könnte oO

    aber danke schonmal für die Tipps^^

    edit: ok,dass mit der länge funzt jetzt. jetzt muss ich nurnoch den rest schauen, sollte abe rzu machens ein, danke schonmal^^



  • Nicht "", sondern ''
    Simon


Log in to reply