0

Hi I would like to declare a global array and and i want to set the items in the array later. so in the end the array will have elements like this.

   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 };

Sorry i totally new to this and i am given a assignment on c++ with not c++ background. Pls advice

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++ の) 方法は、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...");

これにより、配列を再割り当てせずに文字列を追加することもできます。

標準ライブラリに関するいくつかのチュートリアルを読むことをお勧めします。これにより、一般的なタスクのプログラミングがさまざまな方法で容易になります。

于 2012-08-19T13:33:17.160 に答える
1
  1. 配列とグローバルは悪ですhttp://www.parashift.com/c++-faq-lite/defn-evil.html Uf について話しているのは c++ であり、c ではありません

  2. あなたの場合、文字列のベクトルの方が良いです。

    static std::vector<std::string> payload{"To: ", TO, "\n","From: ", FROM}
    
于 2012-08-19T13:28:24.500 に答える