Je dois écrire violemment dans un vecteur (pour éviter memcpy
superflu).Remplir un vecteur <char> d'une manière à l'ancienne (et sale)
Considérons cette pièce très simplifiée du Code
unsigned read_data (char * buffer , unsigned maxsize)
{
const char * data = "Hi folks! I'm the data" ;
unsigned size = strlen(data) ;
if (size > maxsize) return 0 ;
memcpy(buffer,data,size) ;
return size ;
}
void main()
{
std::vector<char> v ;
v.reserve(50) ;
unsigned size = read_data(v.data(),v.capacity()) ;
v.force_actual_size(size) ;
}
Voici la façon dont je l'imaginais: les données sont réellement écrites dans le vecteur, mais la taille du vecteur est toujours 0. donc j'ai besoin de cette méthode force_actual_size
...
Y a-t-il un moyen de l'implémenter, ou mieux, une façon propre de faire la même chose.
Et bien sûr, read_data
vient d'une ancienne API que je ne peux pas modifier.
'resize' au lieu de' reserve' (et 'la taille()' au lieu de 'capacité()')? – Jarod42
force_actual_size est redimensionner. –
@ manni66: Comme OP l'utilise, vous écraserez les données par "\ 0". – Jarod42