2012-11-26 15 views
6

Ich habe ein Zeichenfeld von 256 Zeichen oder char myArray[256] nur das erste Paar hält tatsächlich irgendwelche InformationenAnhänge von Zeichen-Array in String C++

myArray[0] = 'H'; 
myArray[1] = 'E'; 
myArray[2] = 'L'; 
myArray[3] = 'L'; 
myArray[4] = 'O'; 
myArray[5] = NULL; 
myArray[6] = NULL; 
// etc... 

Ich will nicht unbedingt genau wissen, was in dem Array ist, aber ich will zu kopieren, was es ist, minus die null-Zeichen, um meine Puffer Zeichenfolge string buffer

dachte ich, die geeignete Art und Weise, dies zu tun, indem Sie folgendermaßen vorgehen würde:

buffer.append(myArray); 

Und das Programm würde aufhören, Werte zu lesen, sobald es ein Null-Zeichen gefunden hat, aber ich sehe dieses Verhalten nicht. Ich sehe es das gesamte Array in meinem Puffer, Null-Zeichen und alle kopieren. Was wäre der richtige Weg, dies zu tun?

Edit: Einige Arbeits Code leichter

#include <string> 
#include <iostream> 

using namespace std; 

int main() 
{ 
    string buffer; 
    char mychararray[256] = {NULL}; 

    mychararray[0] = 'H'; 
    mychararray[1] = 'e'; 
    mychararray[2] = 'l'; 
    mychararray[3] = 'l'; 
    mychararray[4] = 'o'; 

    buffer.append(mychararray); 

    cout << buffer << endl; 

    return 0; 
} 

einfach realisiert machen ich nicht die Null richtig und meine ursprüngliche Art und Weise funktioniert initialisiert. Entschuldige, dass du Yalls Zeit verschwendest.

+2

Ihr "Arbeitscode" ist völlig anders. Sie vermissen den '= NULL' Teil. Welches ist es? –

+0

@LuchianGrigore, werden alle Werte von 'mychararray' nach Index 4 nicht' NULL' sein (das ist eine echte Frage, ich bin bei C++ ziemlich unerfahren)? –

+3

@usernametbd no - Wenn Sie möchten, dass sie 0 sind, setzen Sie sie explizit auf 0, oder tun Sie einfach: char mychararray [256] = {0}; –

Antwort

9

Versuchen mit

buffer += myArray; 

sollte es tun. append sollte auch funktionieren, wenn Sie das Array null-terminieren.

1

Dies sollte die Arbeit machen:

int c; 
while(myArray[c] != NULL) { 
    buffer.append(1,myArray[c]); 
    ++c; 
} 

Außerdem sollten Sie etwas tun: myArray[5] = '\0'

+0

'= NULL' und' = '\ 0'' sind äquivalent. –

+0

Er hat das Array nicht initialisiert, deshalb sollte er das setzen. – hinafu