繁体   English   中英

QByteArray:如何在其中搜索字符

[英]QByteArray: how to search a character in it

从QByteArray开始,我想在我的QByteArray中搜索“ \\ n” char,并将所有字符从头到尾连到“ \\ n”并将它们保存在QString中; 之后,我将以下字节传递到下一个“ \\ n”并将其保存到新的QString中

QByteArray MyArray= (all data from my previous process);
quint16 ByteArrayCount = MyArray.count(); // number of bytes composing MyArray
quint16 mycounter;
QString myString;
while (mycounter < ByteArrayCount)
{
    if(MyArray[mycounter] != "\n")
      myString.append(MyArray[mycounter]);
    mycounter++;
}

这将在所有行之前附加所有字节; 我的问题是如何评估MyArray [counter],因为当计数器增加时,我无法检查每个字节。

解?

您可以省去麻烦,只需:

QString s(myArray);
QStringList resultStrings = s.split('\n');

这将为您提供一个为每个换行符分割的字符串列表,这听起来像您想做的。

另外,不要太在意这一点,但是您不要初始化计数器,因此您应该 ;;)

这是使用函数hello的简单示例

QString str = "ooops\nhello mama\n daddy cool";
QByteArray bta;
bta.append(str);
for(quint16 index = bta.indexOf('\n'); 
            index != -1; 
            index = bta.indexOf('\n', index+1)) {
   /**
    * Do something with index
    **/
}

但是根据您的问题,当您说“无法检查每个字节”时,并不清楚。 如果您知道可用内存的原因,则可以将原始数据用于:

const char * ptr = MyArray.constData();

并使用自定义验证器:

while(ptr){
    if(valid(ptr) && ptr == '\n') {
        /**
         * do something ...
         **/
    }
    ptr++;
}

ow以及在C / C ++中:

"\n" != 'n'

因为“ \\ n”-是包含\\ n和EOF('\\ 0')和'\\ n'的const C字符串(char [2])-只是简单的C char;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM