初始化具有动态长度的向量

Initialize a vector with a dynamic length

本文关键字:向量 动态 初始化      更新时间:2023-10-16

你能告诉我如何将 buf 矢量的大小更改为动态长度吗?

long five = 555;
char buf[256];
snprintf(buf, sizeof(buf), "%d", five); 

感谢!

如何使用std::vector<std::string>buf;更改我的代码才能正常工作?
我有错误:

Vector不是STD的成员;
BUF 未在此范围内声明,并且错误:">"标记之前的预期主表达式

在C++中,你不能。你必须以某种方式动态分配它,或者最好还是使用像 std::vector 这样的动态数据结构。

尝试:

#include <vector>
#include <string>
long five = 555;
// using vector
std::vector<char> buf1(256);
snprintf(&buf1[0], buf1.size(), "%d", five);
// Or using string 
std::string       buf2(256);
snprintf(&buf2[0], buf2.size(), "%d", five);

虽然不是使用 snprintf(),我会查找如何使用字符串流。

如果你真的反对使用矢量类,你可以自己实现动态内存。 创建一个函数,以便在没有足够的内存来存储新值时添加到数组中。 它会错误地标记新内存,复制内容,附加新值,删除旧内存,然后返回指向新数组的指针。 它们的数量将取决于您的应用程序,您将使用的新内存。(即。 刚好有足够的内存来存储新值以节省内存,或者比旧大小多得多(例如双倍),这样您就不必经常调用此函数。

您可能希望创建字符向量,而不是字符串向量。

我怀疑的第二个错误是变量名称前缺少空格字符。