0

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

   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++ 作业。请建议

4

2 回答 2

3

在 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++)方法是使用 STL 容器,例如std::vector动态管理字符串的类: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...");

这也将允许您在不重新分配数组的情况下添加更多字符串。

我建议您阅读一些关于标准库的教程,因为它可以在许多方面简化常见任务的编程。

于 2012-08-19T13:33:17.160 回答
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}
    
于 2012-08-19T13:28:24.500 回答