# char-Feld in einen CString kopieren



## sTEk (16. Dezember 2004)

Ich bins mal wieder - nachdem ich dank Euch und meiner Bücher schon um einiges tiefer in C++ tauchen kann, hänge ich mal wieder fest. 

 Ich bekomme aus einer Anweisung einen 64stelligen char (eigentlich ja 65, da NULL-terminiert). Diesen möchte ich jetzt in einen CString kopieren. Und da ich diesen char n-tausend mal einlese, muss der aktuelle char immer schön hinten dran an den CString.
 Wie geht das?
 ich bekomme es selbst mit einem char nicht hin, irgendwie gibt er mir, wen ich die Länge des CString wie in der MSDN beschrieben auslese, immer 0 zurück.


----------



## Kachelator (16. Dezember 2004)

> Ich bekomme aus einer Anweisung einen 64stelligen char (eigentlich ja 65, da NULL-terminiert). Diesen möchte ich jetzt in einen CString kopieren. Und da ich diesen char n-tausend mal einlese, muss der aktuelle char immer schön hinten dran an den CString.


Was ist ein 64stelliger char? Was meinst du mit n-Tausend?

Ansonsten -- hier ein paar Möglichkeiten, chars in CStrings reinzubekommen: 


```
char buffer[] = "HALLO";
CString a( buffer );
CString b = buffer;
CString c = "Tach auch.";

a += '!';
```


----------



## sTEk (16. Dezember 2004)

Meinen Char habe ich so definiert:

```
char  input[65]="/0";
```
 
 Da werden dann 64 Zeichen eingelesen und diese sollen in einen CString aneinandergereit werden, also so ungefähr:

```
int i;
 CString   a, alles;
 
 for (i=1; i<5001; i++) {
 	//hier wird der char eingelesen, das klappt wunderbar
 	a=input;
 	alles += a; }
```
 
 Habe ich das jetzt richtig interpretiert? Kann den Code leider erst am Montag ausprobieren, da ich das Gerät, dessen Daten ich einlesen möchte, nicht da habe und der Quellcode auch auf Arbeit liegt.
 Danke.


----------



## Kachelator (16. Dezember 2004)

Du kannst den Pointer auf dein char-Array einfach an den CString zuweisen. Die Schleife ist unnötig. Wichtig ist nur, das input eine abschliessende 0 hat.


```
CString alles = input;
```


----------



## sTEk (20. Dezember 2004)

Ich habe mein Programm jetzt so geschrieben, es klappt auch, jedenfalls gibt er mir die richtige Länge des CStrings an:


```
char  input[65]="/0";
    int i;
    CString   a, alles;
    
 for (i=1; i<4001; i++)		 // Hier wird 4000 mal der cominhalt gelesen und aneinander in eine CStrong-Variable gepackt
   		{
   		sprintf(buffer, "Page: %d", i);
 		m_bytes=port.Read(cominhalt,64);	// Hier wird cominhalt eingelesen
  	 m_EEPROM_Inhalt+=cominhalt;	 // Hier wird cominhalt an m_EEPROM_Inhalt angefügt
   
   		m_status=m_EEPROM_Inhalt.GetLength();
   		sprintf(buffer1, "Länge: %i", m_status);
   		SetDlgItemText(IDC_bytes,buffer1);
   		SetDlgItemText(IDC_COM_Status,buffer);
   
   		UpdateWindow();
   
   		}
```
 
Danke schön


----------

