将字符串添加到char *数组

时间:2012-08-19 12:02:13

标签: c++ arrays c++11

我想知道如何将字符串添加到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或变量测试添加到payload_test []数组中 或者是否有其他方法可以使用用户关联变量创建数组paylod_text []。

4 个答案:

答案 0 :(得分: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()创建的任何字符串。

答案 1 :(得分:1)

如果您想添加测试,那么只需将其放在

参数中即可
testing.c_str()

还有一种方法

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

并使用数组

body.c_str();

答案 2 :(得分:0)

我更喜欢将string用于payload_text。然后你可以轻松地附加字符和其他字符串。如果底层库需要payload_text.c_str()

,则为char*

boost::format()。您可以使用它将%1%%2%替换为您的主题和正文。比如boost::format("SOME STRING %1% AND THEN %2%") % subject % body

答案 3 :(得分: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;