【问题标题】:Initialize a vector with a dynamic length用动态长度初始化向量
【发布时间】:2011-08-26 11:18:23
【问题描述】:

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

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

谢谢!

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

vector 不是 std 的成员;
buf 未在此范围内声明并出现错误:在 ">" 标记

之前的预期主表达式

【问题讨论】:

  • 我要转换的值是long值;
  • #include <vector> #include <string>

标签: c++ vector


【解决方案1】:

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

【讨论】:

  • @just me: "你能重写我的代码吗",你好像误解了StackOverflow的意思。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    试试:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-06-06
        • 1970-01-01
        • 2012-12-15
        • 1970-01-01
        • 2011-04-11
        • 2017-09-07
        • 2011-05-18
        • 1970-01-01
        • 2018-09-07
        相关资源
        最近更新 更多