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

发布于 2024-11-07 12:26:02 字数 333 浏览 0 评论 0原文

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

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

谢谢!

如何使用 std::vectorbuf; 更改我的代码以便正常工作?
我有错误:

向量不是 std 的成员;
buf 未在此范围内声明,并且错误:预期的主表达式位于“>”之前令牌

Can you please tell me how to change the size of the buf vector into a dynamic length?

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

THX!

How to change my code with std::vector<std::string>buf; in order to work correctly?
I have error:

vector is not a member of std;
buf was not declared in this scope and error: expected primary-expression before ">" token

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

走野 2024-11-14 12:26:02

在 C++ 中,你不能。您必须以某种方式动态分配它,或者最好仍然使用动态数据结构,例如 std::vector。

In C++, you can't. You will have to allocate it dynamically somehow, or better still use a dynamic data structure like a std::vector.

凡间太子 2024-11-14 12:26:02

尝试:

#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(),但会查找如何使用 stringstream。

Try:

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

Though rather than using snprintf() I would look up how to use stringstream.

つ可否回来 2024-11-14 12:26:02

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

if you're really opposed to using the vector class, you could implement the dynamic memory yourself. Create a function for adding to the array when theres not enough memory to store the new values. It would malloc new memory, copy the contents over, append new values, delete the old memory, then return a pointer to the new array. They amount new memory that you would use would depend on your application.(ie. just enough memory to store new values to conserve memory, or a lot more(eg double) than the old size so you wouldn't have to call this function as often.

〆一缕阳光ご 2024-11-14 12:26:02

您可能想要创建一个字符向量,而不是字符串向量。

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

You probably want to make a vector of characters, not a vector of strings.

The second error I suspect is a missing space character before the variable name.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文