Почему 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]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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