将int转换为string / char C ++ / Arduino

时间:2011-11-24 23:19:29

标签: c++ string arduino

这必须是C ++中最容易做的事情。

..而且我知道它之前已被多次询问,但请记住,这是Arduino项目的一部分,内存节省是一个主要问题,因为我最多只能播放32256字节。< / p>

我需要将整数转换为字符串。

int GSM_BAUD_RATE;
GSM_BAUD_RATE = 4800;

Serial.println("GSM Shield running at " + GSM_BAUD_RATE + " baud rate.");

显然最后一行会给我一个错误。

提前致谢。

6 个答案:

答案 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.");

因为printprintln方法有重载来处理几种不同的类型。

其他方法在“普通”机器上很有用,但像stringostringstream之类的东西需要堆分配,在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";