gpt4 book ai didi

c++ - 以老式(和肮脏的)方式填充 vector

转载 作者:行者123 更新时间:2023-11-27 23:50:42 26 4
gpt4 key购买 nike

我需要暴力写入一个 vector (以避免多余的memcpy)。

让我们考虑这段非常简化的代码

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 ) ;
}

这是我想象的方式:数据实际上写入了vector,但vector的大小仍然为0。所以我需要这个 force_actual_size 方法...

有没有一种方法可以实现它,或者更好的是,一种干净的方法来做同样的事情。

当然read_data 来 self 无法修改的老式 API。

最佳答案

您可以使用 std::vector::resize 分配您需要的内存并正确更新 vector 的大小:

std::vector<char> v;
v.resize(50);
const auto new_size = read_data(v.data(), v.size());
v.resize(new_size);

关于c++ - 以老式(和肮脏的)方式填充 vector<char>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46685201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com