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

我想将c变量 testing 添加到 payload_test[] 数组中,或者是否有其他方法可以使用用户创建的变量创建数组 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()

还有另一种方法

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

并放入数组使用

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

我更喜欢使用stringfor 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 中本地执行此操作(相对于使用 C++ STL 类),您可以使用 strcat:

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

这仅在您确定输入以空值结尾且不包含内部空值时才有效。否则使用 strncpy 和 strncat。

要使用 STL 类在 C++ 中执行此操作:

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