[英]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.