Anzeige:
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 20

Thema: C++ Daten lesen und ausgeben

  1. #1
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396

    C++ Daten lesen und ausgeben

    Immer wenn ich das mache kommt nur irgend ein Hexadezimal wert raus.
    Aber nicht das was in der datei steht.
    Und wie kann ich zum beispiel ein bestimbten wert in der text datei suchen?
    z.b.
    player_max = ??

    PHP-Code:
    #include <iostream>
    #include <fstream>
    using namespace std;
    main ()
    {
    ifstream.file("config.cfg");
    std cout << file << endl;

    config.cfg
    Code:
    servername = "mussteserver"
    player_max = 10
    map_time = 15

  2. #2
    Registrierter Benutzer Avatar von klewan
    Registriert seit
    06.05.2005
    Ort
    Wien
    Beiträge
    99
    file is ein object


    Code:
    ifstream file("config.txt");
    std::string buffer;
    while (file.good()) {
           getline(file, buffer,'\n');
           cout << buffer << endl;
    }
    file.close();

  3. #3
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Immer wenn ich das mache kommt nur irgend ein Hexadezimal wert raus.
    Aber nicht das was in der datei steht.
    std::cout ist ein ostream. Ein ostream kann einen Pointer formatiert ausgeben. Zu diesem Zweck ist der "<<" Operator (Stream insertion operator genannt) für den Typ void* überladen. Dein "file" ist ein ifstream. Ein ifstream ist ein istream. Ein istream hat einen Typ-Konvertierungsoperator der in void* konvertiert. Weil ein ostream keinen << Operator für ifstream (oder istream) hat, guckt der Compiler ob er den ifstream so konvertieren kann, dass es eine << Operator gibt, der das Resultat ausgeben kann. Und tatsächlich findet er besagten Konvertierungsoperator. Das Resultat konntest du beobachten.
    Siehe auch hier:
    http://gcc.gnu.org/onlinedocs/libstd...o/howto.html#1


    Und wie kann ich zum beispiel ein bestimbten wert in der text datei suchen?
    Z.b. mit find, indem du die Eingabesequenz durch istreambuf_iterator herstellst. Welchen Verfahren du wählen solltest, hängt aber recht stark von den Randbedingungen ab.

  4. #4
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396
    PHP-Code:
    ifstream file("config.txt");
    std::string buffer;
    while (
    file.good())
    {
           
    getline(filebuffer,'\n');
           
    cout << buffer << endl;

    Dan muss ich doch hier von irgenetwas in einen string rein bekommen und den danach mit find duchsuchen ist das so richtig also wenn ich in der config.cfg z.b. den servername finden will ?

    Ich hab schon ein paar sahcen versuch aber kammen immer conpeiler fehler

    PHP-Code:
    // das ging nicht aber ist das der richtige weg ??
    string ifstream file("config.cfg");

    // ging auch nicht
    string getline(filebuffer,'\n');

    // und das ging leider auch nicht
    string cout << buffer << endl

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Dan muss ich doch hier von irgenetwas in einen string rein bekommen und den danach mit find duchsuchen ist das so richtig also wenn ich in der config.cfg z.b. den servername finden will ?
    Ersetze das "muss" durch ein "kann", dann stimmts. Allerdings würde ich davon eher abraten. Aber wie schon gesagt, ich kenne deine sonstigen Bedingungen nicht, letztendlich ist es natürlich deine Entscheidung.

    Ich hab schon ein paar sahcen versuch aber kammen immer conpeiler fehler [...]
    Das sind leider grundsätzliche Dinge die du da falsch machst. Für die solltest du vielleicht besser eine Referenz oder ein Lehrbuch, Tuturial, ... benutzen.

  6. #6
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396
    Was meist du dne mit sonstigen Bedingungen ??
    Ich will eindlich nur die config.cfg nach stichwürtern durchsuchen können

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von localhost
    Ich will eindlich nur die config.cfg nach stichwürtern durchsuchen können
    Was konkret hindert dich jetzt daran, die eingelesene Zeile zu durchsuchen?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  8. #8
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396
    Ich weis nicht wie
    Also wie ich das machen soll oder vorgehen soll.

    Zitat Zitat von anda_skoa
    Was konkret hindert dich jetzt daran, die eingelesene Zeile zu durchsuchen?

    Ciao,
    _

  9. #9
    Registrierter Benutzer
    Registriert seit
    23.05.2004
    Beiträge
    592
    Ich weis nicht wie
    Also wie ich das machen soll oder vorgehen soll.
    Du hast doch jetzt im Grunde alles! Deine Datei ist Zeilenweise aufgebaut, soweit man sehen kann. Klewan hat deshalb getline zum Einlesen vorgeschlagen und sogar Beispielcode gepostet. Und wie du in einem std::string suchst wirst du doch sicherlich rausfinden können.

  10. #10
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396
    Ich versuchs ja aber es geht nicht.

    Das hier ghet auch nicht
    PHP-Code:
    int *found;

    int main()
        {
            
    /** Schreiben und Lesen aus dateien noch nichts bei rum gekommen
             * ifstream ifs("config.cfg");
             */
            
    ifstream file("config.cfg"ios::in|ios::app);
            
            
    found find(
            
    file.seekg(0ios::beg),    // begin
            
    file.seekg(0ios::end),    // ende
            
    "servername"            // Ergebnis
            
    );
            
            
    cout << "Gefunden: " << *found << endl;
            
    /*
            std::string buffer;
            while(file.good())
            {
                getline(file, buffer,'\n');
                cout << buffer << endl;
            }
            */
            //find
            
    file.close();


  11. #11
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich denke für sowas brauchst du spezielle Stream Iteratoren.

    Auch wenn das vielleicht cooler ist, würde ich wirklich beim zeilenweisen Ansatz bleiben und einfach in jeder Zeile mit find() aus string arbeiten.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  12. #12
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396
    Ja aber wie mache ich das
    Ich bin c++ neuling und habe kein internet also nur ein buch
    Und ich kann php was mir eindlich schon viel gehplfen hatt.

    Ihc hab das hier noch gefunden und shcon ein bichen umgebaut.
    Aber wie bekomme ich z.b. den servername also was dahinter steht.?
    Also bruach ich die zeile bis zum \n
    oder ???

    Code:
    #include <iostream>
    #include <string>
    #include <fstream>
    using namespace std;
    
    string Zensur = "*****";
    
    // liefert Zeichenkette
    // s, in der jedes Vorkommen von u durch z ersetzt ist
    
    string zensiere (string s, string u, string z);
    
    int main()
    	{
    		ifstream fin("config.cfg");	// Eingabestrom fin definieren und ver-
    		// binden mit Datei, deren Name in der Stringvariablen Datei steht
    		
    		cout << "Bitte die verbotene Zeichenkette eingeben.\n";
    		string Unwort;
    		
    		getline (cin, Unwort);
    		string Zeile;
    		while(getline (fin, Zeile))	// n�hste Zeile lesen
    		{
    			if(Zeile.find(Unwort)==string::npos)	// Unwort nicht enthalten
    			{
    				cout << Zeile << endl;		// Zeile ausgeben
    			}
    			else
    			{
    				// zensierte Zeile ausgeben:
    				cout << zensiere (Zeile, Unwort, Zensur) << endl;
    			}
    		}
    		fin.close();
    	}
    
    string zensiere (string s, string u, string z)
    	{
    		string::size_type i;
    		
    		while((i=s.find(u)) != string::npos)	// solange Unwort in s vorkommt
    		{
    			s.replace (i, u.size(), z);	// durch Zensur ersetzen
    			return s;
    		}
    	}
    Zitat Zitat von anda_skoa
    Ich denke für sowas brauchst du spezielle Stream Iteratoren.

    Auch wenn das vielleicht cooler ist, würde ich wirklich beim zeilenweisen Ansatz bleiben und einfach in jeder Zeile mit find() aus string arbeiten.

    Ciao,
    _

  13. #13
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Zitat Zitat von localhost
    JIhc hab das hier noch gefunden und shcon ein bichen umgebaut.
    Aber wie bekomme ich z.b. den servername also was dahinter steht.?
    Also bruach ich die zeile bis zum \n
    oder ???
    Ist schon mal nicht schlecht.

    Aber besser du benutzt die Schleife wie klewan sie gepostet hat, kannst aber das '\n' weglassen, weil das ohnehin der Default ist.

    Dann in buffer oder wie auch immer du die string Variable nennst, mit find suchen, so wie du das jetzt schon hast.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  14. #14
    Registrierter Benutzer
    Registriert seit
    07.11.2002
    Beiträge
    396
    Mit hat noch jemadn anders geholfen aber geht uach nicht.

    PHP-Code:
    #include<iostream> 
    #include<fstream> 
    #include<string> 
    using namespace std

    int main() 
        { 
            
    /** Schreiben und Lesen aus dateien noch nichts bei rum gekommen 
             * ifstream ifs("config.cfg"); 
             */ 
            
    ifstream file("config.cfg"); 
            
            
    std::string buffer
            
    //std::string::find 
            
    if(buffer.find("servername") != std::string::npos
            
    cout << "gefunden: " << buffer << endl
            
            
    //find 
            
    file.close(); 
            return 
    0
        } 
    Ich will eindlich nur den servername aus der datei lesen und ihn speter ans opengl übergeben.
    kann ich das nicht irgen wie bei x.org nachschauen die xorg.conf wird doch auch so ausgelesen

  15. #15
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Lesen solltest du vielleicht schon auch

    Soll der String auf magische Weise mit den Inhalt der Datei gefüllt werden?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •