0

char* の配列に文字列を追加する方法を知りたい

#define FROM    "<rasulasath@Tester.com>"
#define TO      "<rasulasath@gmail.com>"
#define CC      "<rasulasath@gmail.com>"
#define SUBJECT "TESTING SUBJECT"

string testing("USING variables");
const char * c = "Subject: ";

static const char *payload_text[]={
"To: " TO "\n","From: " FROM "\n","Cc: " CC "\n",c "\n",
"\n", /* empty line to divide headers from body, see RFC5322 */
SUBJECT "\n",
"\n",
"Testing the msg.\n",
"Check RFC5322.\n",
NULL
   };

または変数 testing をpayload_test[]の配列に追加したい、cまたはユーザーが挿入した変数で配列paylod_text []を作成する他の方法があります。

4

4 に答える 4

1

動的に割り当てられた配列を使用しないのはなぜですか?

char **email = malloc(sizeof(*email) * 6);
email[0] = "To: " TO "\n";
...
char buf[256];
snprintf(buf, sizeof(buf), "%s \n", c);
email[3] = strdup(buf);
..

使用後に strdup() によって作成された文字列を解放することを忘れないでください。

于 2012-08-19T12:08:12.760 に答える
1

テストを追加したい場合は、次のようにパラメーターに入れます

testing.c_str()

また、もう1つの方法があります

string body="Testing the msg.\n";
body+=testing;
body+="Bye ....";

そして、配列を使用するには

body.c_str();
于 2012-08-19T12:08:50.997 に答える
0

string代わりにforを使用することをお勧めしpayload_textます。その後、文字やその他の文字列を簡単に追加できます。payload_text.c_str()基盤となるライブラリが必要な場合は後者char*

ありますboost::format()%1%これを使用して、%2%を件名と本文に置き換えることができます。お気に入りboost::format("SOME STRING %1% AND THEN %2%") % subject % body

于 2012-08-19T12:08:53.413 に答える
0

(C++ STL クラスを使用するのではなく) C でネイティブにこれを行うには、strcat を使用できます。

char* buffer = malloc((strlen(c) + strlen(payload_text) + 1) * sizeof(char));
strcpy(buffer, payload_text);
strcat(buffer, c);

これは、入力が null で終了し、内部 null が含まれていないことが確実な場合にのみ有効です。それ以外の場合は、strncpy と strncat を使用してください。

STL クラスを使用して C++ でこれを行うには、次のようにします。

string result = string(payload_text);
result += testing;
于 2012-08-19T12:12:14.833 に答える