将数据(字符串或整数)添加到char数组

时间:2014-02-23 22:35:37

标签: c++ arrays string type-conversion

我正在尝试从int或string中将数据添加到预先存在的char数组中。代码如下

int num1 = 10; int num2 = 5; string temp = "Client"; char buf[64] = "This is a message for: " + temp + num1 + " " + temp + num 2;

我似乎在这里得到转换数据错误。我不太确定如何将其正确转换为正确的数据类型。我需要将它们存储到char数组中,因为这个数组将与sendto()函数一起用于UDP套接字,而不是简单地将它打印到控制台/调试窗口

编辑:语言是c ++

1 个答案:

答案 0 :(得分:0)

首先,您需要将整数转换为字符串。 这可以使用sprintf()itoa()stringstream与运营商<<

来完成

第二件事是了解运营商+的作用。

"This is a message for: " + temp + num1 + " " + temp + num 2;

首先将采用前两个参数"This is a message for: " + temp。第一个参数被认为是一个以null结尾的字符串,第二个参数是一个整数。此类操作没有预定义的运算符+。所以现在没有必要继续总结,我们已经没有编译。

我可以提出两个解决方案:

int num1 = 10;
int num2 = 5;
char buf[64];
string temp = "Client";
sprintf(buf, "This is a message for: %s%d %s%d", temp.c_str(), num1, temp.c_str(), num2);
// Dangerous, can walk out of allocated memmory on the stack,
// which may not throw an exception in runtime but will mess the memory

更安全

#include <sstream>
int num1 = 10;
int num2 = 5;
string temp = "Client";
stringstream ss;
ss << "This is a message for: " << temp << num1 << " " << temp << num2;
ss.str().c_str(); // Message is here