1, 怪异现象:字符串相加操作不正常! 以上代码,明显输出字符串应含有后缀.jpg,但实际输出却不含后缀(如下),字符串加法操作似乎不起作用了! 采用showMessage进行输出,看看结果如何? 结果仍是不显示字符串后缀,但可以看到字符串偏左显示,似乎后面
1, 怪异现象:字符串相加操作不正常!
以上代码,明显输出字符串应含有后缀“.jpg”,但实际输出却不含后缀(如下),字符串加法操作似乎不起作用了!
采用showMessage进行输出,看看结果如何?
结果仍是不显示字符串后缀,但可以看到字符串偏左显示,似乎后面还有很多不可见字符。 2,怪异原因:字符串中含有\0,即字符串终止符 以上现象已经看出,字符串加法失效的原因可能是含有某些不可见字符,那到底是什么字符呢? 回到这些字符串产生的源头,即下面由字节数组转换成字符串函数:
显然,此函数未考虑len长度以内可能含有的\0字符,如果buffer中len长度以内含有\0字符,那么这些\0字符也会被复制进result字符串中,造成后续字符串加法“失效”。 3,解决方案:修改函数 将函数修改如下,判断逐字节判断buffer,遇到\0就返回,这样转换的字符串就不含\0了。问题解决。
|
2021-10-15
2022-08-20
2022-08-20
2021-10-15