古陵逝烟 发表于 2014-9-19 21:48:42

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对象中数据的末端,感谢了先。

Super169 发表于 2014-9-20 01:47:41

test_Str += String(array_year);

古陵逝烟 发表于 2014-9-20 12:25:29

本帖最后由 古陵逝烟 于 2014-9-20 12:54 编辑

Super169 发表于 2014-9-20 01:47 static/image/common/back.gif
test_Str += String(array_year);

感谢关注:但是这个报错了。





arduino提供的强制类型转换的方法里面也木有String()

SproutME 发表于 2014-9-20 13:35:53

试了下可以的
void setup()
{
        String a = "mama";
        char b[] = "haha";
        a += String(b);

}

古陵逝烟 发表于 2014-9-20 14:04:23

SproutME 发表于 2014-9-20 13:35 static/image/common/back.gif
试了下可以的
void setup()
{


谢谢关注。。

测试发现

unsigned chara 或 unsigned chara[]   这个不行
chara 或者unsigned chara[]   这个倒是可以
不清楚这两个在这里有什么区别。

不管咋样,谢谢层主了!解决一个大问题。

古陵逝烟 发表于 2014-9-20 14:23:21

Super169 发表于 2014-9-20 01:47 static/image/common/back.gif
test_Str += String(array_year);

回头看了下,原来这个不是类型转换,而是调用了构造函数,生成另外一个String对象再重载 operator+。

Super169 发表于 2014-9-20 15:41:19

古陵逝烟 发表于 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, 而不能配對.

Super169 发表于 2014-9-20 15:47:03

古陵逝烟 发表于 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, 但就比較多工序了.

古陵逝烟 发表于 2014-9-20 17:34:05

Super169 发表于 2014-9-20 15:41 static/image/common/back.gif
oh, 沒留意你用了一個 "unsigned char",這就是問題了.
char 是用一個 byte 是記錄字符的, 本身是沒有...

个人思维误区了,以前习惯用 unsigned char 的 type 来定义一个字符串,果断受教了!ths!~

溜溜丶 发表于 2016-5-24 23:15:43

楼楼 可以问你一个问题么String Num1=“danger”;
                                       String Num2=“”;
Num2是一个变化的值,但是我想把Num2放到Num1后面,应该怎么弄。。。

maxims 发表于 2016-5-25 08:30:03

本帖最后由 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]
查看完整版本: char[]与string数据如何连接起来。