Ergebnis 1 bis 10 von 10

Thema: fstream und string

  1. #1
    minder
    Gast

    Standard fstream und string

    Hi

    Code:
    string m_sBuffer;
    fstream Data;
    
    Data.open(FileLocation, ios::in | ios::out);
    
        if(!Data.is_open())
        {
            pLogfile->write_report("error", "fStream Error", FileLocation);
    
            return false;
        }
        else
        {
            return true;
        }
    
    ReadFile();
        p.second = Name;
        p.first = Points;
        m_cScores.push_back(p);
    
        m_sBuffer = "";
        for (i = m_cScores.begin(); i < m_cScores.end(); i++)
        {
            m_sBuffer += i->first +";"+ i->second +"\n";
        }
        if(Data.write(m_sBuffer.c_str(),m_sBuffer.size()))
        {
    // Ich lande immer hier
        }
    Kann mir jemand helfen? Oder besser gesagt, es wird nichts ins File geschrieben
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    Geändert von minder (10.01.2010 um 13:27 Uhr)

  2. #2
    Jedi Ritter Avatar von Dodo
    Registriert seit
    26.04.2008
    Ort
    Wien
    Alter
    27
    Beiträge
    3.774
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: fstream und string

    Zitat Zitat von minder
    Hi
    ....
    Kann mir jemand helfen?
    Das ist eine tolle Beschreibung

    Was willst du machen? Was soll der Code tun? Was geht nicht?
    Something big is coming. And there will be pirates and ninjas and unicorns...

  3. #3
    minder
    Gast

    Standard AW: fstream und string

    Ich möchte "vector< pair<string, string> > m_cScores" in die Datei fstream Data speichern. Aber leider kommt nichts im file an. "Data.write(m_sBuffer.c_str(),m_sBuffer.size() )" m_sBuffer hat den richtigen Inhalt. es wird aber dennoch nichts hinein geschrieben

  4. #4
    Jedi Ritter Avatar von Dodo
    Registriert seit
    26.04.2008
    Ort
    Wien
    Alter
    27
    Beiträge
    3.774
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: fstream und string

    Code:
        if(!Data.is_open())
        {
            pLogfile->write_report("error", "fStream Error", FileLocation);
    
            return false;
        }
        else
        {
            return true;
        }
    
    ReadFile();
    Das Readfile(); wird hier doch nie ausgeführt, oder?
    weil er davor mit return rausspringt.
    Something big is coming. And there will be pirates and ninjas and unicorns...

  5. #5
    minder
    Gast

    Standard AW: fstream und string

    eh sorry, ich nicht viel überlegt. ich hab einige funktionen einfach zusammen kopiert und nicht gesagt das es einzelne funktionen in einer klassen sind.

    Code:
    bool CWrite::OpenFile(char FileLocation[])
    {
        Data.open(FileLocation, ios::in | ios::out);
    
        if(!Data.is_open())
        {
            pLogfile->write_report("error", "fStream Error", FileLocation);
    
            return false;
        }
        else
        {
            return true;
        }
    }
    Code:
        ReadFile();
        p.second = Name;
        p.first = Points;
        m_cScores.push_back(p);
    
        m_sBuffer = "";
        for (i = m_cScores.begin(); i < m_cScores.end(); i++)
        {
            m_sBuffer += i->first +";"+ i->second +"\n";
        }
        if(Data.write(m_sBuffer.c_str(),m_sBuffer.size()))
        {
        }
    Geändert von minder (10.01.2010 um 17:14 Uhr)

  6. #6
    Jedi Ritter Avatar von Dodo
    Registriert seit
    26.04.2008
    Ort
    Wien
    Alter
    27
    Beiträge
    3.774
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: fstream und string

    wenn m_sBuffer den richtigen inhalt hat, versuch mal den << operator

    ich erkenn keinen fehler in dem code (in dem was da steht)
    Something big is coming. And there will be pirates and ninjas and unicorns...

  7. #7
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: fstream und string

    Du solltest stets << und nicht die Operatoren auf Byte-Ebene verwenden.

  8. #8
    minder
    Gast

    Standard AW: fstream und string

    Es wird immer noch nichts ins File geschrieben:
    Code:
    #ifndef WRITE_h
    #define WRITE_h
    
    #include <fstream>
    #include <string>
    #include <vector>
    
    #include "framework.h"
    #include "logfile.h"
    #include "sprite.h"
    
    using namespace std;
    
    class CWrite : public CSprite
    {
        public:
            CWrite();
            ~CWrite();
    
            bool OpenFile(char FileLocation[]);
            void CloseFile();
            void ReadFile();
            void WriteFile(string Name, string Points);
    
            void InputHandler();
    
            bool LoadTTF(char FileLocation[], int height);
            void SetColor(int R, int G, int B);
            void WriteText(string text, int x, int y, bool Draw);
            void WriteHighScoreText();
            void ShowCentred();
            string GetInput();
            void FreeImage() {m_pImage = TTF_RenderText_Solid( m_pFont, "", m_Color );}
    
        private:
            CSprite *m_pSpriteText;
            TTF_Font *m_pFont;
            SDL_Color m_Color;
            fstream Data;
            string m_sBuffer;
            string m_sInput;
            char m_cMessage[256];
            vector< pair<string, string> > m_cScores;
            pair<string, string> p;
            vector< pair<string, string> >::iterator i;
    };
    
    #endif
    Code:
    #include "write.h"
    
    CWrite::CWrite()
    {
        pLogfile->write_report("info", "Write", "Neue Write Klasse wurde erstellt!");
        SetColor(100, 100, 100);
        sprintf(m_cMessage, "");
        m_sInput = "";
        SDL_EnableUNICODE( SDL_ENABLE );
    }
    
    CWrite::~CWrite()
    {
        SDL_EnableUNICODE( SDL_DISABLE );
        pLogfile->write_report("info", "Write", "Write Klasse wurde gel&ouml;scht!");
    }
    
    bool CWrite::OpenFile(char FileLocation[])
    {
        Data.open(FileLocation, ios::in | ios::out | ios::binary);
    
        if(!Data.is_open())
        {
            pLogfile->write_report("error", "fStream Error", FileLocation);
    
            return false;
        }
        else
        {
            return true;
        }
    }
    
    void CWrite::CloseFile()
    {
        Data.close();
    }
    
    void CWrite::WriteFile(string Name, string Points)
    {
        m_cScores.clear();
        ReadFile();
        p.second = Name;
        p.first = Points;
        m_cScores.push_back(p);
    
        m_sBuffer = "";
        for (i = m_cScores.begin(); i < m_cScores.end(); i++)
        {
            m_sBuffer += i->first +";"+ i->second +"\n";
        }
        Data << m_sBuffer.c_str();
        Data.write((char*)&m_sBuffer,sizeof(m_sBuffer));
    }
    
    void CWrite::ReadFile()
    {
        while(true)
        {
          getline(Data, p.first, ';');
          if(!Data)
            break;
          getline(Data, p.second);
          if(!Data)
            break;
          m_cScores.push_back(p);
        }
    }
    
    bool CWrite::LoadTTF(char FileLocation[], int height)
    {
        m_pFont = TTF_OpenFont(FileLocation, height);
        
        if(!m_pFont) 
        {
            sprintf(m_cMessage, "TTF_OpenFont: %s\n", TTF_GetError());
            pLogfile->write_report("error", "TTF", m_cMessage);
    
            return (false);
        }
    
        return (true);
    }
    
    void CWrite::SetColor(int R, int G, int B)
    {
        m_Color.r = R;
        m_Color.g = G;
        m_Color.b = B;
    }
    
    void CWrite::WriteText(string text, int x, int y, bool Draw)
    {
        Setpos(x,y);
        m_pImage = TTF_RenderUTF8_Blended(m_pFont, text.c_str(), m_Color);
    
        if (Draw)
        {
            Render();
        }
    }
    
    void CWrite::WriteHighScoreText()
    {
        int y = 50;
        m_sBuffer = "";
    
        Setpos(250,50);
    
        for(i=m_cScores.begin(); i < m_cScores.end(); i++)
        {
            m_sBuffer = i->first + "    " + i->second;
            m_pImage = TTF_RenderUTF8_Blended(m_pFont, m_sBuffer.c_str(), m_Color);
            Setpos(250,y);
            Render();
            y += 30;
        }
    }
    
    void CWrite::InputHandler()
    {
        if( pFramework->Event.type == SDL_KEYDOWN )
        {
            m_sBuffer = m_sInput;
    
            if( m_sInput.length() <= 20 )
            {
                if( pFramework->Event.key.keysym.unicode == (Uint16)' ' )
                {
                    m_sInput += (char)pFramework->Event.key.keysym.unicode;
                }
                else if( ( pFramework->Event.key.keysym.unicode >= (Uint16)'0' ) && (pFramework->Event.key.keysym.unicode <= (Uint16)'9' ) )
                {
                    m_sInput += (char)pFramework->Event.key.keysym.unicode;
                }
                else if( ( pFramework->Event.key.keysym.unicode >= (Uint16)'A' ) && (pFramework->Event.key.keysym.unicode <= (Uint16)'Z' ) )
                {
                    m_sInput += (char)pFramework->Event.key.keysym.unicode;
                }
                else if( (pFramework->Event.key.keysym.unicode >= (Uint16)'a' ) && (pFramework->Event.key.keysym.unicode <= (Uint16)'z' ) )
                {
                    m_sInput += (char)pFramework->Event.key.keysym.unicode;
                }
            }
    
            if( ( pFramework->Event.key.keysym.sym == SDLK_BACKSPACE ) && ( m_sInput.length() != 0 ) )
            {
                m_sInput.erase( m_sInput.length() - 1 );
            }
            if( m_sInput != m_sBuffer )
            {
                SDL_FreeSurface(m_pImage);
                m_pImage = TTF_RenderText_Solid( m_pFont, m_sInput.c_str(), m_Color );
            }
        }
    }
    
    void CWrite::ShowCentred()
    {
        if( m_pImage != NULL )
        {
            Setpos((950 - m_pImage->w) / 2,(600-m_pImage->h) / 2);
        }
    }
    string CWrite::GetInput()
    {
        return m_sInput;
    }

  9. #9
    Forum Guru Avatar von The User
    Registriert seit
    28.10.2007
    Ort
    Zwischen Pazifik und Atlantik...
    Beiträge
    4.044
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: fstream und string

    Vllt. hat es etwas damit zu tun, dass dein Stream am Ende vom Lesen "kaputt" ist. (!Data) Da kann dann vermutlich auch nicht mehr geschrieben werden. Daher: Stream zurücksetzen.

  10. #10
    minder
    Gast

    Standard AW: fstream und string

    Zitat Zitat von The User Beitrag anzeigen
    Vllt. hat es etwas damit zu tun, dass dein Stream am Ende vom Lesen "kaputt" ist. (!Data) Da kann dann vermutlich auch nicht mehr geschrieben werden. Daher: Stream zurücksetzen.
    Danke jetzt geht es !

Ähnliche Themen

  1. String aus String "fischen"
    Von RedFighter im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 9
    Letzter Beitrag: 31.08.2009, 17:37
  2. Java - String in String-Array finden
    Von bitterlemoncola im Forum Forum für alle anderen Programmiersprachen
    Antworten: 1
    Letzter Beitrag: 27.03.2009, 18:20
  3. string zählen
    Von don-golione im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 15.10.2006, 17:57
  4. unexpectet T-String
    Von im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 12
    Letzter Beitrag: 10.10.2006, 10:39
  5. PHP + String länge?
    Von gast im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 1
    Letzter Beitrag: 06.08.2004, 13:04

Stichworte

Berechtigungen

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