Почему gdb экранирует восьмеричные символы при запросе строки, присвоенной массиву символов, содержащему управляющие симC++

Программы на C++. Форум разработчиков
Anonymous
Почему gdb экранирует восьмеричные символы при запросе строки, присвоенной массиву символов, содержащему управляющие сим

Сообщение Anonymous »

Я заметил, что при назначении std::string_view (или std::string) массиву символов, содержащему управляющие символы (например, '\001' [Начало заголовка]), GDB будет представлять это string_view с помощью восьмеричные escape-символы между уже существующими управляющими символами и другим конкретным символом (в моем случае '=').
Пример:

Код: Выделить всё

#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
const std::array myArr =
{ '8', '=', 'F', 'I', 'X', 'T', '.', '1', '.', '1',
'\001', '9', '=', '9', '0', '\001', '3', '5', '=', 'A' };

const std::string_view view(myArr.begin(), myArr.size());
const std::string      str (myArr.begin(), myArr.size());

std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/77824888/why-does-gdb-octal-escape-characters-when-querying-a-string-assigned-to-a-char-a[/url]

Вернуться в «C++»