char[]与string数据如何连接起来。
RT,小菜请教各位大虾。我的逻辑如下:
unsigned char array_year;
void setup(void){
array_year = ' ';
array_year = '2';
array_year = '0';
array_year = '1';
array_year = '4';
array_year = 0;
}
void loop(void){
String test_Str = "Friday";
#if 0
test_Str += " 2014";//这样可以
#elseif
test_Str += array_year; //这样不行
#endif
Serial.print(test_Str); // 目的是向串口输出"Friday 2014"
}
因为unsigned char array_year;这个数字里面的数据是会改变的,所以没有采用这种
char *array_year = " 2014";这种形式。。
请问有没有大虾知道怎么把char[] 合并到string对象中数据的末端,感谢了先。 test_Str += String(array_year); 本帖最后由 古陵逝烟 于 2014-9-20 12:54 编辑
Super169 发表于 2014-9-20 01:47 static/image/common/back.gif
test_Str += String(array_year);
感谢关注:但是这个报错了。
arduino提供的强制类型转换的方法里面也木有String()
试了下可以的
void setup()
{
String a = "mama";
char b[] = "haha";
a += String(b);
} SproutME 发表于 2014-9-20 13:35 static/image/common/back.gif
试了下可以的
void setup()
{
谢谢关注。。
测试发现
unsigned chara 或 unsigned chara[] 这个不行
chara 或者unsigned chara[] 这个倒是可以
不清楚这两个在这里有什么区别。
不管咋样,谢谢层主了!解决一个大问题。 Super169 发表于 2014-9-20 01:47 static/image/common/back.gif
test_Str += String(array_year);
回头看了下,原来这个不是类型转换,而是调用了构造函数,生成另外一个String对象再重载 operator+。 古陵逝烟 发表于 2014-9-20 14:04 static/image/common/back.gif
谢谢关注。。
测试发现
oh, 沒留意你用了一個 "unsigned char",這就是問題了.
char 是用一個 byte 是記錄字符的, 本身是沒有 sign 的意思, unsigned char 有點畫蛇添足了.
我想你也不設定一個 unsigned String 吧, 為何又要造一個 unsigned char?
寫 String 庫的人, 相信也認為 unsigned char 是沒意義, 所以沒有做出針對 unsigned char 的設定, 而 C++ 在這方面有點嚴格, 既然你要 pass 一個 unsigned char*, 原本定義的 char* 就視作不同了, 所以就找不到合適的.
或者樓主試想想.... unsigned char 中的 unsigned 有什麼意義吧.
沒意義的話, 就不要加上去了, 否則只會令compiler 以為是一個特殊的 type, 而不能配對.
古陵逝烟 发表于 2014-9-20 14:23 static/image/common/back.gif
回头看了下,原来这个不是类型转换,而是调用了构造函数,生成另外一个String对象再重载 operator+。
對, String 是一個 Class, 不能靠原生的轉換生成, 所以調用了 String class 的 constructor 去生成一個 String object, 配合到 operator + 中使用.
當然, 也可以自己寫一個 function, 把 char* 中一個一個的 char , 不斷用 operator + 去合成整人個 String, 但就比較多工序了.
Super169 发表于 2014-9-20 15:41 static/image/common/back.gif
oh, 沒留意你用了一個 "unsigned char",這就是問題了.
char 是用一個 byte 是記錄字符的, 本身是沒有...
个人思维误区了,以前习惯用 unsigned char 的 type 来定义一个字符串,果断受教了!ths!~ 楼楼 可以问你一个问题么String Num1=“danger”;
String Num2=“”;
Num2是一个变化的值,但是我想把Num2放到Num1后面,应该怎么弄。。。 本帖最后由 maxims 于 2016-5-25 08:31 编辑
sprintf(String,"%S",char Arry);
例如:把RFID的SN号合并到TpStr字符串变量
sprintf(TpStr, "%02X%02X%02X%02X", rfid.uid.uidByte, rfid.uid.uidByte, rfid.uid.uidByte, rfid.uid.uidByte);
页:
[1]