稍后声明数组并赋值

时间:2012-08-19 13:15:13

标签: c++ arrays c++11 declaration

您好我想声明一个全局数组,并且我想稍后在数组中设置项目。 所以最后数组会有这样的元素。

   const char *payload_text[]= new const char(){"To: " TO "\n","From: " FROM "\n","Cc: " CC 
   "\n","Subject: Test2 \n",  "\n", "Testing using methods ver1.\n",NULL };

抱歉,我对此完全陌生,并且我获得了c ++的作业,而不是c ++背景。 请咨询

2 个答案:

答案 0 :(得分:2)

在C ++中,使用与您提供的代码类似的代码无法实现您的目标。

修改:至少不要动态添加项目。在另一个答案中发布的代码galadog只有在声明它的位置初始化向量时才有效。

但是,在运行时创建和/或填充数组有多种可能性。

最接近你的例子的方法是

char **payload_text;
// ...
payload_text = new char*[number_of_entries];
payload_text[0] = "To: ..."
payload_text[1] = "From: ..."
// ... and so on.

但是,使用new分配的内存不是由C ++管理的(我假设您来自C#和/或Java)。您必须手动释放它以避免内存泄漏。

更好(更多C ++)的方法是使用像std::vector这样的STL容器以及动态管理字符串的类:std::string

// Beginning of your source code
#include <vector>
#include <string>

//...

std::vector<std::string> payload_text;
//...
payload_text.push_back("For...");
payload_text.push_back("To...");

这也允许您添加更多字符串而无需重新分配数组。

我建议您阅读一些有关标准库的教程,因为它可以通过多种方式简化编程常见任务。

答案 1 :(得分:1)

  1. 数组和全局变量是邪恶的http://www.parashift.com/c++-faq-lite/defn-evil.html我们是在谈论c ++,而不是c

  2. 在你的情况下你最好使用字符串向量,例如

    static std::vector<std::string> payload{"To: ", TO, "\n","From: ", FROM}