Estoy tratando de convertir un std::vector<char> en una cadena mediante:

// Data has been received, update the buffer...
buffer = readBuffer.data();
buffer[bytesRead-1] = '
// Data has been received, update the buffer...
buffer = readBuffer.data();
buffer[bytesRead-1] = '\0';
'
;

El problema que estoy teniendo es que cuando me depuración readBuffer puedo obtener "<A HREF="https://www.google.com/">here</A>."

pero en la revisión de búfer puedo obtener '<A HREF="https://ww ²²²²▌▌╫$Ö►¬∟☺.google.com/">here</A>.'

Hay algo realmente obvio que me falta?

  • Vector se define como std::vector<char> readBuffer(tamaño); No readBuffer.de datos() devuelve el array de caracteres?
  • Devuelve un puntero al primer elemento de la vector (suponiendo size != 0). Usted probablemente no ha demostrado la línea de código que tiene el error. ¿Qué significa «revisar» significa? Supongo que el acceso buffer, pero cuando? ¿readBuffer Todavía existen cuando revise buffer?
  • Sospecho que el OP buffer puntero deja de ser el readBuffer vector, lo que provoca que el punto a se cancela la asignación de datos. Esta sería la causa de la basura para mostrar al revisar (inspeccionar el contenido de) buffer.
InformationsquelleAutor Paul Morriss | 2013-11-05

2 Comentarios

  1. 15

    La escritura de un carácter nulo al final de un personaje vector no por arte de magia crear un std::string. Crear una std::string, usar algo como:

    std::string s = std::string(readBuffer.begin(), readBuffer.end());

    No necesitan explícitamente anexar el carácter nulo para la cadena, el std::string constructor va a hacer por usted.

    • Gracias.. fijo. Agradezco su rápida respuesta, no me di cuenta de que era posible llamar a ese constructor como lo hizo.
  2. 0

    usted puede construir una cadena de vectores como este:

    std::string str(readBuffer.begin(), readBuffer.end());

Dejar respuesta

Please enter your comment!
Please enter your name here