我需要猛烈地写入矢量(以避免多余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