从QByteArray开始,我想搜索" \ n"在我的QByteArray中加入char并加入从开头到#34; \ 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],因为我在计数器增加时无法检查每个字节。
解?
答案 0 :(得分:7)
你可以省去麻烦,简单地说:
QString s(myArray);
QStringList resultStrings = s.split('\n');
这将为您提供每个新行字符分割的字符串列表,这就是您想要做的事情。
另外,不要强调这一点,但你没有初始化你的计数器,你真的应该;)
答案 1 :(得分:0)
这是使用函数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
**/
}
但是根据你的问题,当你说“无法检查每个字节”时,就不那么清楚了。如果您知道可用mem的diapasons,则可以使用原始数据:
const char * ptr = MyArray.constData();
并使用自定义验证器:
while(ptr){
if(valid(ptr) && ptr == '\n') {
/**
* do something ...
**/
}
ptr++;
}
ow以及C / C ++:
"\n" != 'n'
因为“\ n” - 是包含\ n和EOF('\ 0')的const C字符串(char [2]) 和'\ n' - 只是简单的C char;