2012-11-26 13 views
6

Mam tablicę znaków 256 znaków lub char myArray[256] tylko pierwsza para rzeczywiście posiadają żadnych informacjidołączanie tablica znaków na ciąg C++

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

I niekoniecznie będą dokładnie wiedzieć, co jest w tablicy, ale chcę skopiować to, co jest tam, minus zerowej znaków, do mojego ciąg bufora string buffer

Myślałem odpowiedni sposób to zrobić będzie w następujący sposób:

buffer.append(myArray); 

Program przestanie czytać wartości po napotkaniu znaku nul, ale nie widzę takiego zachowania. Widzę, że kopiuje on całą tablicę do mojego bufora, znaki puste i wszystkie. Jaki byłby właściwy sposób, aby to zrobić?

Edycja: Niektóre programy pracy, aby ułatwić

#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; 
} 

Wystarczy sobie sprawę, że nie było inicjowanie NULL prawidłowo i mój oryginalny sposób działa. Przepraszam za stratę czasu Yall'a.

+2

Twój "działający kod" jest zupełnie inny. Brakuje części '= NULL'. Który to jest? –

+0

@LuchianGrigore, czy wszystkie wartości 'mychararray' po indeksie 4 nie będą domyślnie ustawione na" NULL "(to jest faktyczne pytanie, jestem dość niedoświadczony w C++)? –

+3

@usernametbd nie - jeśli chcesz, aby miały one wartość 0, ustaw je samodzielnie na wartość jawnie lub po prostu wykonaj: char mychararray [256] = {0}; –

Odpowiedz

9

spróbuj

buffer += myArray; 

powinno wystarczyć. append powinien również działać, jeśli null-terminate tablicy.

1

ten powinien wykonać pracę:

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

Ponadto, należy zrobić coś takiego: myArray[5] = '\0'

+0

'= NULL' i' = '\ 0'' są równoważne. –

+0

Nie zainicjował tablicy, dlatego powinien ją umieścić. – hinafu

Powiązane problemy