You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何将char[]类型的dayOfweek转换为String类型?

将char[]转换为Arduino String类型的方法

在Arduino环境中,把char[]类型转换为String类型非常简单,有两种常用的直接实现方式:

方法1:使用String构造函数

直接通过String类的构造函数传入char[],即可完成转换:

void printLocalTime()
{
  struct tm tm;
  if(!getLocalTime(&tm)){
    Serial.println("Failed to obtain time");
    return;
  }
 
  Serial.println(&tm, "%A, %B %d %Y %H:%M:%S");

  char dayOfweek[10]; // 建议增大数组长度,避免"%A"结果截断(比如"Wednesday"需要9个字符+结束符)
  strftime(dayOfweek, sizeof(dayOfweek), "%A", &tm);

  // 用构造函数完成转换
  String dayStr(dayOfweek);
  // 验证转换结果
  Serial.println("转换后的星期字符串:");
  Serial.println(dayStr);
}

方法2:使用赋值运算符

先声明空的String变量,再将char[]直接赋值给它:

void printLocalTime()
{
  struct tm tm;
  if(!getLocalTime(&tm)){
    Serial.println("Failed to obtain time");
    return;
  }
 
  Serial.println(&tm, "%A, %B %d %Y %H:%M:%S");

  char dayOfweek[10];
  strftime(dayOfweek, sizeof(dayOfweek), "%A", &tm);

  // 先声明String变量,再赋值
  String dayStr;
  dayStr = dayOfweek;
  // 验证输出
  Serial.println(dayStr);
}

注意事项

  • 要确保char[]是带\0结束符的合法C字符串,strftime会自动添加结束符,但必须保证数组长度足够容纳目标字符串(包含结束符),避免缓冲区溢出。比如原代码中dayOfweek[8]会截断"Wednesday"这类较长的星期名称,建议适当增大数组长度,或者用sizeof(dayOfweek)作为strftime的第二个参数,提升安全性。

内容的提问来源于stack exchange,提问作者Damiano Miazzi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 18:30:06