buffer de protocolo dice que puede contain any arbitrary sequence of bytes. pero si mis datos contienen '\ 0', cómo el buffer del protocolo puede codificar toda mi información desde una variable de cadena.¿por qué el protocolo Buffer bytes es una cadena en C++?
Respuesta
La implementación C++ de los búferes de protocolo devuelve el byte y los tipos de cadena como std::string
. Esta estructura contiene una función de longitud que le dice cuánto tiempo son los datos correspondientes (así como también los datos). Por lo tanto, no hay una importancia especial de \0
caracteres incrustados.
Las funciones de configuración también aceptan una cadena, o hay versiones que aceptan un búfer y la longitud. Si desea establecer un campo que sólo puede hacer esto:
pb.set_foo(std::string(data, data_length));
o
pb.set_foo(data, data_length);
Ver también https://stackoverflow.com/questions/2845769/can-a-stdstring-contain-embedded-nulls – Raedwald
- 1. Protocolo Buffer over socket en C++
- 2. Buffer vs String speed: ¿Por qué String es más rápido?
- 3. ¿Qué es el protocolo SMPP?
- 4. ¿Cuántos bytes tiene una cadena
- 5. ¿Es posible simular un mensaje de buffer de protocolo Java?
- 6. conversión de bytes a una cadena C#
- 7. ¿Qué es el buffer de salida?
- 8. ¿Cómo maneja el buffer de protocolo el control de versiones?
- 9. ¿Qué es un protocolo?
- 10. ¿Es seguro sprintf (buffer, "% s [...]", buffer, [...])?
- 11. ¿Por qué el protocolo POP3 sobrevive?
- 12. ¿Por qué AppDomainSetup.ShadowCopyFiles es una cadena?
- 13. ¿Cómo convierto una cadena en un buffer en Python 3.1?
- 14. Buffers de protocolo de Google - ¿Buffer de tamaño fijo?
- 15. ¿Por qué C# Convert.ToBase64String() me da 88 como longitud cuando paso en 64 bytes?
- 16. ¿Qué es un protocolo webcal?
- 17. ¿Qué es un "buffer" en VIM?
- 18. ¿Por qué debería hacer doble buffer manual?
- 19. Protocolo Buffer: cómo definir el tipo de fecha?
- 20. Convertir una matriz de bytes a una clase que contiene una matriz de bytes en C#
- 21. ¿Por qué jpegStillImageNSDataRepresentation lanza una excepción cuando el buffer de muestra NO es nulo?
- 22. ¿Cómo trunco una cadena al convertir a bytes en C#?
- 23. por qué el tamaño de referencia es siempre de 4 bytes - C++
- 24. ¿Por qué console.log (buffer) me da una lista hexadecimal?
- 25. ¿Qué tan segura es la autenticación en el protocolo mysql?
- 26. ¿Por qué este formato de cadena no es una moneda?
- 27. ¿Qué es una "cadena de caracteres anchos" en lenguaje C?
- 28. Cómo copiar una cadena en una matriz char en C++ sin pasar por la memoria intermedia
- 29. ¿Cuántos bytes ocupará una cadena?
- 30. ¿Qué es la insuficiencia de buffer?
¿Qué quiere decir por "una cadena variable"? ¿Es esto un 'char *'? ¿Es C, Java o algo más? –
@Marcelo Supongo que quiere decir 'cadena' de' '... –
Ya no soy una persona de C++, pero tenía la impresión de que' \ 0' no tiene un significado especial en una cadena de C++ * * a menos que ** esté usando métodos que manejan específicamente '\ 0'. Entonces ... simplemente no uses esos métodos? –