Arduino String类型字符串转char数组

本文详细介绍了如何在Arduino中使用strcpy()函数将String类型字符串转换为char数组,以及toCharArray()和getBytes()方法的异同。通过实例展示了处理中文字符和标点符号的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Arduino String类型字符串转char数组


strcpy()函数

char *strcpy(char *dest, const char *src)
dest – 指向用于存储复制内容的目标数组。
src – 要复制的字符串。

toCharArray()函数

  • 相当于嵌套for循环实现。

myString.toCharArray(buf, len)
myString: 需要转的String.
buf: 存放目标对象. 数据类型:char数组.
len: 需要转换多少位. 数据类型: unsigned int.

getBytes()函数

myString.getBytes(buf, len)
参数:myString: 需要转换的String.
buf: 存储对象. 数据类型: byte类型数组 或者unsigned char
len:转换长度. 数据类型: unsigned int.

实例代码

/*
 * 一个英文字符等于1个字节,一个中文(含繁体)字符等于3个字节;中文标点占3个字节,英文标点占1个字节。
 * 1Byte=8bit;
 * char = 8bit
 */

void libian(String str0);

void setup() {
Serial.begin(115200);
String strn= "白日依山尽,黄河入海流。欲穷千里目,更上一层楼。";

Serial.println(strn.length());
Serial.println(strn);
libian(strn);
char ch2[64];
strcpy(ch2,strn.c_str());
Serial.println(ch2);
unsigned char ch3[64];
strn.getBytes(ch3,strn.length()+1);//strn.length()等价于strlen()函数,长度不包含‘\0’
Serial.println(ch3);
}

void loop() {

}

void libian(String str0)
{
  int temp = 0;
  String str = str0;
  if (str.indexOf(',') != -1)
  {
    temp++;
    str.replace(",", ",");
  }
  if (str.indexOf(';') != -1)
  {
    temp++;
    str.replace(";", ";");
  }
  if (str.indexOf('。') != -1)
  {
    temp++;
    str.replace("。", ".");
  }
  if (str.indexOf('“') != -1)
  {
    temp++;
    str.replace("“", "\"");
  }
  if (str.indexOf('”') != -1)
  {
    temp++;
    str.replace("”", "\"");
  }
  Serial.println();
  Serial.println(str);
  Serial.println(str.length());
//  int jishu = (str0.length() - str.length()) / 3;//计算标点符号字符个数
char ch[66];
str.toCharArray(ch,str.length()+1);//字符串转字符数组
  Serial.println(ch);
}


  • 串口打印
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值