C++ 在TFT上显示日期而不使用字符形式的数字数组
我正在尝试从C++ 在TFT上显示日期而不使用字符形式的数字数组,c++,arduino,arduino-c++,C++,Arduino,Arduino C++,我正在尝试从DateTime实例将一个月中的一天写入TFT显示器。DateTime实例的数据来自RTC 基本上,我正在尝试这样做: DateTime-timenow; timenow=rtc.now();//获取当前RTC数据并将其存储为DateTime。 tft.textWrite(timenow.day());//这不起作用(见下文),但它显示了我正在尝试做的想法。 tft.textWrite接受char作为其参数,但timenow.day()显示为输出int。我能让它工作的唯一方法(这显
DateTime
实例将一个月中的一天写入TFT显示器。DateTime
实例的数据来自RTC
基本上,我正在尝试这样做:
DateTime-timenow;
timenow=rtc.now();//获取当前RTC数据并将其存储为DateTime。
tft.textWrite(timenow.day());//这不起作用(见下文),但它显示了我正在尝试做的想法。
tft.textWrite
接受char
作为其参数,但timenow.day()
显示为输出int
。我能让它工作的唯一方法(这显然不是一个好方法,正如你将看到的那样)是将1到31之间的所有数字组成一个巨大的数组,作为char
:
const char days[31][3]={“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“11”、“12”、“13”、“14”、“15”、“16”、“17”、“18”、“19”、“20”、“21”、“22”、“23”、“24”、“25”、“26”、“27”、“28”、“29”、“30”、“31”};
然后我在代码中使用了数组:
DateTime-timenow;
timenow=rtc.now();//获取当前RTC数据并将其存储为DateTime。
tft.textWrite(天[timenow.day()-1]);
不幸的是,我每年都要做同样的事情,而且我无法在可预见的未来手动将所有年份输入到数组中。它会占用内存,而且会耗费不必要的时间
我的问题是,有人能告诉我如何将int
转换为char
以用于此函数,而不需要庞大的数组吗?
从
String(timenow.day())
到char(timenow.day())
再到char(String(timenow.day())
之类的东西,我都试过了,但它们似乎都不起作用。您需要将整数转换成字符串
int day=timenow.day();
char-str[12];
sprintf(str,“%d”,天);
文本写入(str);
编辑:
代码说明:
- 首先,我们将
timenow.day()的整数值存储到
李>day
- 然后我们声明一个
数组来存储char
到int-day
sprintf()char的转换。它将在
函数调用中使用。此字符数组必须足够大以容纳转换字符串。这就是我在这里使用char str[12]`的原因。因此,我们有12个字节来存储转换后的值
将sprintf(str,“%d”,day)
作为其第一个参数,将在其中存储转换。第二个参数是要获取的输出字符串的格式。然后,下一个参数是您传递的格式字符串所需的参数,在本例中,它是char*
,这意味着我们需要给它一个整数值。这就是我们将“%d”
变量作为最后一个参数传递的原因day
- 然后我们声明一个
通过在Linux终端上运行
mansprintf
,您可以在sprintf
功能中获得更多详细信息。否则,您可以获得更多信息。您需要将整数转换为字符串
int day=timenow.day();
char-str[12];
sprintf(str,“%d”,天);
文本写入(str);
编辑:
代码说明:
- 首先,我们将
timenow.day()的整数值存储到
李>day
- 然后我们声明一个
数组来存储char
到int-day
sprintf()char的转换。它将在
函数调用中使用。此字符数组必须足够大以容纳转换字符串。这就是我在这里使用char str[12]`的原因。因此,我们有12个字节来存储转换后的值
将sprintf(str,“%d”,day)
作为其第一个参数,将在其中存储转换。第二个参数是要获取的输出字符串的格式。然后,下一个参数是您传递的格式字符串所需的参数,在本例中,它是char*
,这意味着我们需要给它一个整数值。这就是我们将“%d”
变量作为最后一个参数传递的原因day
- 然后我们声明一个
通过在Linux终端上运行
mansprintf
,您可以在sprintf
功能中获得更多详细信息。否则,您可以获得更多信息。如果您使用的是c++11,您可以使用以下字符串:
tft.textWrite(std::to_string(timenow.day()).c_str())如果您使用的是c++11,您可以使用以下命令来设置字符串: textWrite(std::to_string(timenow.day()).c_str())