Estoy terminando la funcionalidad de socket de Linux del espacio de usuario en C++ para un sistema integrado (sí, probablemente reinvente la rueda de nuevo).Uso de read() directamente en C++ std: vector
Quiero ofrecer una implementación de lectura y escritura utilizando un vector.
Hacer la escritura es bastante fácil, puedo pasar &myvec[0]
y evitar copiar innecesariamente. Me gustaría hacer lo mismo y leer directamente en un vector, en lugar de leer en un búfer char y luego copiar todo eso en un vector recién creado.
Ahora, sé la cantidad de datos que quiero leer, y puedo asignarlos adecuadamente (vec.reserve()
). También puedo leer en &myvec[0]
, aunque esta es probablemente una MUY MALA IDEA. Obviamente, hacer esto no permite a myvec.size devolver nada sensato. ¿Hay alguna manera de hacer esto que:
- no sentir asco por completo a partir de una seguridad/C++ perspectiva
- no involucra dos copias del bloque de datos - una vez en el núcleo para el espacio de usuario y una vez de un buffer de estilo C
char *
en un vector C++.
¿Un vector de qué? –
Un vector de caracteres (bueno, bytes)! – Joe
Probablemente quiera usar 'uint8_t' o' unsigned char' para bytes. – tzaman