anexar matriz de caracteres a la cadena de c++

Tengo una matriz de caracteres de 256 caracteres o char myArray[256] sólo el primer par de celebrar cualquier información

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

Yo no necesariamente saben exactamente lo que está en la matriz, pero quiero copiar lo que hay, menos los caracteres nulos, a mi búfer de cadena string buffer

Pensé que la mejor manera de hacer esto es haciendo lo siguiente:

buffer.append(myArray);

Y el programa podría detener la lectura de los valores una vez que se encontró con un caracter nul, pero no estoy de ver ese comportamiento. Estoy viendo lo de la copia de la totalidad de la matriz en mi búfer de caracteres nulos y todo. ¿Cuál sería la manera correcta de hacerlo?

Edit: Algunas código de trabajo para hacer más fácil

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

Di cuenta de que yo no estaba inicializando el nulo correctamente y mi forma original de las obras. Lo siento para los residuos de yall del tiempo.

Su “código de trabajo” es completamente diferente. Te estás perdiendo el =NULL parte. Que es?
todos los valores de mychararray después de índice de 4 no se NULL por defecto (esto es una pregunta, soy bastante inexperto en c++)?
no – si usted desea ser 0, set a 0 a sí mismo de forma explícita, o simplemente hacer: char mychararray[256] = { 0 };
Estás código (en la parte de arriba, con nulos) debería funcionar – consulte cplusplus.com/reference/string/string/append … ¿Cómo ‘append’ saber el tamaño de mychararray?
El código debería funcionar una vez que se agrega la terminación nula (enlace).

OriginalEl autor user1852056 | 2012-11-26

2 respuestas

  1. 9

    Tratar con

    buffer += myArray;

    debe hacerlo. append también debería funcionar si usted null-terminar la matriz.

    OriginalEl autor Luchian Grigore

  2. 2

    Esto debe hacer el trabajo:

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

    También, usted debe hacer algo como esto: myArray[5] = '\0'

    =NULL y ='\0' son equivalentes.
    Él no inicializar la matriz, que es la razón por la que debería poner.

    OriginalEl autor hinafu

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *