char-Vektor in CString umwandeln



  • Hi!

    Ich würd gern einen dynamischen char-Vektor in einen CString umwandeln. Weiß zufällig wer , wie das geht? 🙂

    mfg enne



  • in einer Schleife kannst einfach jedes Element des Vektore mit += an deinen String anfügen. Evtl davor schonmal die physikalische Länges Strings setzen

    CString temp;
    temp.Preallocate(vec.size());
    
    vector<char>::iterator it;
    
    for(it = vec.begin();it != vec.end();++it)
    {
        temp += *it;
    }
    

    Kannst die Schleife natürlich auch mit dem STL-Algorithmus umsetzen.



  • Ok, hat mir sehr geholfen, thx 😉



  • Ich hätte da jetzt noch folgendes Problem:

    Ich möchte in meiner Methode noch zusätzlich die Anzahl der Zeilen bestimmen. Das Problem ist nur, dass ich das Ende der Datei erreicht habe und ich es nicht schaffe, zum Anfang meiner Textdatei zurückzukehren.
    Hier der Code:

    bool CWegmessung::GetText()
    {	
       //Variable length mit irgendeinem Wert initialisieren
    	int length = 1;
       //Textdatei zum Lesen öffnen
    	ifstream textdatei("test.txt", ios::in);
    	if(!textdatei)
    	{
    		TRACE(_T("Fehler beim Öffnen der Datei!"));
    		return 1;
    	}
    
    	//Länge der Textdatei bestimmen
    	 textdatei.seekg (0, ios::end);
    	 length = textdatei.tellg();
    	 textdatei.seekg (0, ios::beg);
    
    	//Neues Vektorobjekt anlegen
    	 char *buffer = new char[length];
    	 textdatei.read (buffer,length);
    
    	//Bufferinhalt in CString-Objekt speichern
    	 text = buffer;
    	 TRACE(text);
    
    	 int f = (int)textdatei.tellg();
    
    	//Speichern der Zeilenanzahl
    	 while(!textdatei.eof())
    	 {
    		 textdatei.getline(buffer, length);
    		 this->linecounter++;
    	 }
    
        //Schließen der Textdatei
    	 textdatei.close();
    	 delete buffer;
    	 return 0;
    }
    

    Die while-Schleife wird nie aufgerufen, da ich mich bereits am Ende der Textdatei befinde. Gibts da ne Möglichkeit, zum Anfang zu kommen?

    mfg enne


Anmelden zum Antworten