从qbytearray中提取部分数据
第一次在csdn论坛上发帖,还请各位大牛多多指教。
实在是卡在这里好几天了,也没弄出来,恳求各位大侠请点一下小弟,谢谢了。
问题描述如下:
从外部已经读取数据进来了: QByteArray temp = myCom->readAll(); 读取进来的数据都放在了temp中,但是,我只想要其中的一部分数据,比如全部读取进来的数据是11111111111111111111100100010111111111111111111111,我只要其中的从0开始那几位,其他的都不要,我曾经试过把temp改成数组形式的temp[1000],然后查找第一个0出现的位置number,,之后,用temp.mid(number,8)的方式来提取这几位数据,但是,不成功。
现在,就卡在这里好几天了,上网找了很多资料,由于小弟愚笨,都没能解决,所以,恳请大侠出手相救,谢谢了。
[解决办法]
查了下QByteArray,其功能是相当丰富的,所以不需要改成数组
首先在给temp赋值后可以 if (!temp.isEmpty ()) 判断数组是否赋值成功
然后可以在条件中使用循环 for (int i = 0; i != temp.length (), ++i)后,逐个用temp[i]与'0'比较(STL的vector可以直接使用vector[i],QByteArray应该也可以,如果不行肯定有类似)
if (temp[i] = '0') { //unicode不这么写
temp.remove (0, i); //移除temp第0到i之间的数据,这里可以添加一个判断:如果i=0则不处理
break; //跳出循环
}
其实也可以用其它很多方法:例如用startsWith (const char * str)判断第一元素是不是你所要的,如果是则返回temp,如果不是就remove掉第一个元素
[解决办法]