c++中int到String的转换

Converting an int to String in C++

本文关键字:转换 String int c++      更新时间:2023-10-16

我一直在做一个项目,我需要将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)

由于某种原因,我使用的方法没有工作,所以我研究了一点,发现字符串(马特)实际上是一个字符串对象。我不知道这是不是真的。为了使tft.textWrite();它看起来应该像这样:

代码如下:

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

我也试过这样做:

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

有人能帮忙吗?

谢谢

应该没问题。

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

%ld用于长整型。如果您使用的是-128到+128的int8_t,那么最好使用%d。

这段代码几乎是正确的

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

"%ld" 

期望一个long int作为类型,你需要找到一个可以打印8位int的类型。我想应该是"%hh"

second your

char string[3];

太短了!如果马特是100,那么你使用3个字符,但你仍然需要空间来结束零(和符号)。所以至少应该是

char string[5];

第三代码

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

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

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

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

你对sprint的尝试在我看来不错。您是否希望您的环境包含完整的C标准库?如果没有,则必须编写自己的格式函数。如果有,是否包含了string.h ?

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

编辑:这篇文章适用于好的老C风格,我没有看到偏离主题

下面的代码应该可以工作:

// 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"。