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

时间:2011-05-16 13:36:56

标签: c++ vector

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

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

THX!

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

  

vector不是std的成员;
  在此范围和错误中未声明buf:在“&gt;”之前预期的primary-expression令牌

4 个答案:

答案 0 :(得分:8)

在C ++中,你不能。您将不得不以某种方式动态分配它,或者更好地使用动态数据结构,如std :: vector。

答案 1 :(得分:2)

尝试:

#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。

答案 2 :(得分:0)

如果你真的反对使用vector类,你可以自己实现动态内存。当没有足够的内存来存储新值时,创建一个用于添加到数组的函数。它将malloc新内存,复制内容,追加新值,删除旧内存,然后返回指向新数组的指针。它们会占用新的内存,这取决于你的应用程序。(即只需要足够的内存来存储新值以节省内存,或者比旧版本更多(例如加倍),所以你不必调用这个函数经常。

答案 3 :(得分:0)

你可能想要制作一个字符向量,而不是字符串向量。

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

相关问题