为什么string转为vector string 的时候 size变小了?
时间: 2024-12-06 16:27:32 浏览: 8
当你将一个`std::string`转换为`std::vector<std::string>`时,size变小的原因在于`std::string`本质上是一个字符序列,而`std::vector<std::string>`是一个动态数组或容器,每个元素可以看作是一个独立的对象。当你将单个字符串放入这个向量中时,向量需要存储的是每个`std::string`对象的引用,而不是原字符串的内容。
例如:
```cpp
std::string str = "Hello";
std::vector<std::string> vec;
vec.push_back(str);
```
在这个例子中,`str`是一个对象,将其添加到`vec`中实际上是复制了一个新的`std::string`对象,所以`vec`的大小会因为这个新对象而增加,而不是像`std::vector<char>`那样直接操作原始数据。因此,`vec.size()`可能会比`str.size()`大,但不是变小。
如果你想要保持字符数不变,你应该考虑使用`std::vector<char>`或者`std::vector<uint8_t>`来表示字符串,或者使用`std::string`作为`vec`的元素类型,并直接添加整个字符串。
阅读全文