我需要猛烈地寫入矢量(以避免多餘memcpy
)。以舊式(髒)方式填充矢量<char>
讓我們考慮這個非常簡單的一段代碼
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) ;
}
這裏是我想象的方式:數據實際寫入的載體,但載體的大小仍然是0。 所以我需要這個force_actual_size
方法...
有沒有辦法實現它,或者更好,乾淨的方式來做同樣的事情。
當然的,read_data
來自一個老式API我不能修改。
'resize',而不是'reserve'(和'大小()',而不是'容量()' )? – Jarod42
force_actual_size正在調整大小。 – 2017-10-11 10:03:49
@ manni66:當OP使用它時,你會用''\ 0''覆蓋數據。 – Jarod42