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
相关产品推荐
相关产品推荐

