我正在尝试从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 ++
答案 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