字符串截取問題


之前在一個有關網絡通信模塊的項目中,遇到了有關字符串截取的問題。

定義一個發送某個信息的幀協議。其中一部分是定長的字符串,假定為30個字節大小,多余字節補0;

解析過程:

獲取要解析的字符串

  1. 每次偏移指定的字節數,獲取相應的信息
  2. 假定要解析的字符串為char* data;,解析上述定義的字符串的偏移量為x

截取需要的字符串:

QString str = QString::fromUtf8(data + x, 30);

這個解析方法是錯誤的。這個就獲得了一個固定大小的字符串(30字節),而字符串比較大小會比較字節大小,

並且0在字符串中是不顯示的,這就會導致一個不明顯的錯誤。

正確的解析方法是:

QString str = QString::fromUtf8(data + x);

只要需要解析的字符串大小在30字節之內,並且多余字節補0的情況下,該方法就能正確解析所需要的字符串。


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com