Pfad aus txt-Datei lesen!



  • Hallo,

    ich möchte in meinem Programm einen TexturPfad aus einer Txt-Datei lesen, nur leider schaffe ich es nicht!
    Also ich öffne die txt Datei und lese dann den Pfad heraus:

    ifstream file(Levelname);
    char TextureName[256];
    file>>TextureName;
    Textur = LoadTexture(TextureName);
    

    ich weiß, das das char TextureName anderst gehöhrt, nur wie!?? Da die LoadTexture-Funktion einen char-Pfad benötigt...
    Hoffe ihr könnt mir helfen!

    cya



  • wie wärs mit

    ifstream file(Levelname);
    std::string TextureName;
    file >> TextureName;
    Textur = LoadTexture(TextureName.c_str());
    

    Kurt



  • hm, danke, aber leider bekomme ich noch 2 Fehler...ach, ich kenn mich mit den Strings, char überhaupt nicht aus...

    error C2664: 'TextureManager::LoadTexture' : cannot convert parameter 1 from 'const char *' to 'char *'
    

    und

    error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'std::string' (or there is no acceptable conversion)
    

    Edit
    Der zweite Fehler war, weil ich <string> vergessen habe zu inkludieren..bräuchte ich nur mehr den ersten Fehler...

    cya



  • #include<fstream>
    
    std::ifstream file(Levelname);
    char TextureName[256];
    file.getline(TextureName, 256);
    Textur = LoadTexture(TextureName);
    

    vieleicht so?



  • nein, geht auch nicht, ich bekomme zwar keinen Fehler mehr, aber der Pfad wird nicht aus der Text-Datei gelesen...

    cya



  • #include <string>
    #include <fstream>
    #include <iostream>
    
    int main() {
      std::ifstream in("datei.txt");
      std::string path;
      std::getline(in,path);
      std::cout << "Pfad: " << path << '\n';
    }
    


  • danke, es würde schon funktionieren, aber ich bräuchte noch etwas um den String in char zu konvertieren, sonst bekomme ich immer den Fehler:

    error C2664: 'LoadTexture' : cannot convert parameter 1 from 'std::string' to 'char *'
    

    Wie geht das? Da gibt es doch bestimmt einen ganz einfachen Trick...

    cya



  • Jo, ganz einfach :D:

    str.c_str();
    


  • ja, dann bekomm ich aber wieder den Fehler:

    error C2664: 'LoadTexture' : cannot convert parameter 1 from 'const char *' to 'char *'
    

    ??
    cya



  • Sledgehammer schrieb:

    hm, danke, aber leider bekomme ich noch 2 Fehler...ach, ich kenn mich mit den Strings, char überhaupt nicht aus...

    error C2664: 'TextureManager::LoadTexture' : cannot convert parameter 1 from 'const char *' to 'char *'
    

    Der Fehler hier ist, dass der Parameter von LoadTexture schlichtweg falsch konzipiert wurde. Ein Parameter, der per Referenz oder Zeiger übergeben wird, sollte immer const sein, sofern man nicht wirklich den Wunsch hat, ihn zu verändern. Der Parameter von LoadTexture sollte eigentlich 'const char*' sein, oder wenn du generell std::string verwendest, dann 'const std::string&'.



  • achso, sorry. Habe die ersten paar Beiträge net gelesen.
    Naja, du kannst casten aber das sollte man, wenn möglich, vermeiden.



  • ahhh. danke für eure Antworten, jetzt hab ich es endlich geschafft...
    Naja LoadTexture((char*) TextureName); Wieso ist das den nicht gut?, naja hauptsache es funktioniert! thx

    cya



  • das ist nicht gut, weil du das const beseitigst und das const hat seinen Sinn, wenn nun irgend wo jemand auf die Idee kommt auf den String zu schreiben fliegt dir die Anwendung um die Ohren.

    Aus dem Grund sollte man erst C++ lernen und dann versuchen mit C++ Spiele zu programmieren. Ich meine es kann ja nicht sein, dass man Texturen laden will aber noch nicht mal Datei I/O beherscht oder const kennt.



  • naja, vielleicht weiß ich nicht, wie man mit const oder mit strings umgeht! Spiele programmiere ich trozdem mit C++ und solange sie Spaß bringen ist es mir egal, ob es ein schöner C++ Stil ist oder nicht, und bis jetzt sind meine Spiele schon ganz gut rüber gekommen! 😉

    cya



  • ja und wenn du dann mal so was machen willst wie in einer Datei lesen oder andere Dinge, die man in jedem guten C++ Tutorial findet, dann frag einfach hier nach. Foren sind ja eh nur was für Leute, die kein Bock haben die Dinge richtig zu lernen und Spiele programmieren ist ja eh viel cooler, als so Grundlagen scheiße, die hält ein nur auf 🙄

    😡

    Mein Tipp 💡, wenn du Programmieren willst ohne wirklich programmieren lernen zu müssen, dann schau dir doch VisualBasic, Gambas oder Delphi an. C++ ist dafür absolut nicht geeignet.



  • ja, mach doch nicht gleich so einen Aufstand...
    Ich möchte C++ schon lernen, nur das Buch, was ich lesen möchte erscheint erst in 1-2 Monaten!! Naja, sonst kann ich ja eh fast alle Grundlagen, bis auf eben so Kleinigkeiten, sonst glaube hätte ich nicht ein komplettes MarioSpiel geschafft zu proggen mit DirectX in C++!

    cya


Log in to reply