这必须是C ++中最容易做的事情。
..而且我知道它之前已被多次询问,但请记住,这是Arduino项目的一部分,内存节省是一个主要问题,因为我最多只能播放32256字节。< / p>
我需要将整数转换为字符串。
int GSM_BAUD_RATE;
GSM_BAUD_RATE = 4800;
Serial.println("GSM Shield running at " + GSM_BAUD_RATE + " baud rate.");
显然最后一行会给我一个错误。
提前致谢。
答案 0 :(得分:6)
如果您正在研究Arduino项目,那么您应该让Serial
对象处理它:
int GSM_BAUD_RATE;
GSM_BAUD_RATE = 4800;
Serial.print("GSM Shield running at ");
Serial.print(GSM_BAUD_RATE);
Serial.println(" baud rate.");
因为print
和println
方法有重载来处理几种不同的类型。
其他方法在“普通”机器上很有用,但像string
和ostringstream
之类的东西需要堆分配,在Arduino板上,如果可能的话应该避免由于严格的内存约束
答案 1 :(得分:3)
更新:这回答了原始问题,在更新之前提到Arduino。我要离开了,因为它是非嵌入式系统的正确答案。
您可以使用stringstream
创建格式化字符串,然后从中提取string
。
#include <sstream>
std::ostringstream s;
s << "GSM Shield running at " << GSM_BAUD_RATE << " baud rate.";
Serial.println(s.str().c_str()); // assuming `println(char const *);`
答案 2 :(得分:1)
int i = 42;
char buf[30];
memset (buf, 0, sizeof(buf));
snprintf(buf, sizeof(buf)-1, "%d", i);
// now buf contains the "42" string.
答案 3 :(得分:1)
您可以使用字符串流:
int main()
{
int myInt = 12345;
std::ostringstream ostr;
ostr << myInt;
std::string myStr = "The int was: " + ostr.str();
std::cout << myStr << std::endl;
}
答案 4 :(得分:0)
试试这个:
#include <iostream>
int GSM_BAUD_RATE;
GSM_BAUD_RATE = 4800;
char text[256];
sprintf(text, "GSM Shield running at %d baud rate.", GSM_BAUD_RATE);
Serial.println(text);
答案 5 :(得分:0)
执行此操作的C ++方法是boost :: format
std::string str = "GSM blah blah ";
str+= boost::str(boost::format("%d") % 4800);
str+= "blah blah";