在C ++中将int转换为String

时间:2016-09-06 16:30:57

标签: c++ string arduino int

我一直在研究一个需要将int8_t变量转换为字符串的项目。我对此做了一些阅读并得出结论,使用Strint(int8_t)是一个选项。

这是我的代码:

int8_t matt = 0;
matt += 1;
char string[3]=String(matt);
tft.textWrite(string);// this is used to display text on an lcd display (arduino)

由于某些原因,我使用的方法不起作用所以我研究了一点,发现String(matt)实际上是一个String对象。我真的不知道这是否属实。为了tft.textWrite();工作它应该看起来像这样。

以下是代码:

 char string[15]= "Hello, World! ";
 tft.textWrite(string);

我也尝试过使用它:

char string[3];
sprintf(string, "%ld", matt);

然而这不起作用。

有人可以帮忙吗?

由于

4 个答案:

答案 0 :(得分:0)

它应该可以正常工作。

sprintf(string, "%ld", matt);

%ld用于long int。你使用的int8_t的范围是-128到+128,最好使用%d。

答案 1 :(得分:0)

此代码几乎是正确的

char string[3];
sprintf(string, "%ld", matt);

第一

"%ld" 

期望long int作为一种类型,您需要找到一个可以打印8位int的类型。我认为它是"%hh"。

你的第二个

char string[3];

太短了!如果亚光是100然后你使用3个字符但你还需要空间来结束零(和符号)。所以它至少应该是

char string[5];

第三个代码

sprintf(string, "%ld", matt);

是不安全的,因为它可以像在原始代码中那样写入字符串末尾之外,使用

snprintf(string, sizeof(string), "%ld", matt);

答案 2 :(得分:0)

首先,您必须记住C中没有String类型,只有固定大小的char数组(类型:char *或char [])。我们仍称它们为字符串,但请牢记这一点。

你对sprintf的尝试对我来说很好看。你觉得你的环境包括完整的C标准库吗?如果没有,您将必须编写自己的格式函数。如果是,你是否包括string.h?

无论如何,尝试使用snprintf()来精确定位目标的大小,它更安全。

编辑:这篇文章适用于优秀的'C风格,我没有看到它是偏离主题

答案 3 :(得分:-1)

以下代码应该有效:

// Example program
#include <iostream>
#include <string>

int main()
{
  int8_t matt = 0;
  matt += 1;
  char string[1]; 
  sprintf(string, "%ld", matt);
  std::cout << string << std::endl;
  return 0;
}

打印“1”。