请告诉我如何将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令牌
答案 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)
你可能想要制作一个字符向量,而不是字符串向量。
我怀疑第二个错误是变量名称前面缺少空格字符。