Главное, что вам нужно знать: записанный вами массив CMD_ALPHA
не содержит вообще никаких значений, соответствующих символу \
.
Байт Описанный ниже массив содержит только одно значение.
Это единственное значение соответствует символу "
.
Его размер равен единице:
QByteArray baWithQuoteSymbolOnly = "\"";
Причина, по которой вы видите символы \
заключается в том, что ваш инструмент вывода (вывод отладчика, терминал и т. д. c) решает показать все символы в массиве + представляют несколько символов «непечатным» способом.
Например, печатный способ вывода * Символ 1015 * - это разрыв строки, а не \ n.
Запустите приведенный ниже код для лучшего понимания.
#include <QtCore/QCoreApplication>
#include <QByteArray>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
/*
The byte array below contains only 1 symbol "
It does not contain \ symbols at all.
Its size is equal to one.
*/
QByteArray baWithQuoteSymbolOnly = "\"";
qDebug() << baWithQuoteSymbolOnly.size();
/*
But it can be printed with quotation characters
and with escaping of non-printable characters
*/
qDebug() << baWithQuoteSymbolOnly;
/*
You can print it WITHOUT quotation characters
and WITHOUT escaping of non-printable characters
*/
qDebug().noquote() << baWithQuoteSymbolOnly;
QByteArray const CMD_ALPHA = "wd = require \"word\" \r\n";
qDebug() << CMD_ALPHA;
qDebug().noquote() << CMD_ALPHA;
// output every element that CMD_ALPHA array actually contains
for (int i=0; i<CMD_ALPHA.size(); i++)
{
char asciiSymbol = CMD_ALPHA.at(i);
int value = CMD_ALPHA.at(i);
qDebug().noquote() << "ascii symbol =" << asciiSymbol << "value in hex =" << QString::number(value, 16);
}
// Now see what ASCII code does backslash symbol really have
char realBackslash = '\\';
qDebug().noquote() << "backslash symbol =" << realBackslash
<< "value in hex =" << QString::number(realBackslash, 16);
return a.exec();
}
Дополнительные примечания. QByteArray - фактически класс-оболочка для хранения массива 8-битных значений. Это даже не массив символов и не строка, пока вы не решите показать его. Строка - это просто форма представления массива цифровых значений. Вывод с добавлением непечатаемых символов является своего рода представлением строк.