Ответ 1
Да, вы не можете попробовать "\004four"
, например. На самом деле, возможно, даже "\04four"
, потому что f
не является восьмеричным числом.
У меня есть последовательности символов, которые я подаю в функцию декодирования:
Например:
"\x05three"
(Да, это строка в стиле Паскаля. Эта функция преобразует строки с префиксом длины в строки с нулевым завершением.)
Я написал несколько тестовых примеров, среди которых:
"\x04four"
И к моему удивлению, это получилось как "Oour". Оглядываясь ближе, выясняется, что спецификация escape-последовательностей для Visual Studio позволяет, что моя последовательность в основном интерпретируется как \x04f
, которая будет 79 в базе 10 ( таким образом, моя итоговая строка становится "Oour", 79 - "O" )
Моим решением было просто разбить строку:
"\x04" "four"
Вопрос: есть ли другой способ избежать или прекратить escape-последовательность?
Да, вы не можете попробовать "\004four"
, например. На самом деле, возможно, даже "\04four"
, потому что f
не является восьмеричным числом.
Вы просто пишете строки рядом друг с другом:
char a[3] = "1\02" // {'1', '\2', '\0'}
char a[4] = "1\0""2" // {'1', '\0', '2', '\0'}
sizeof("1\02") // 3
sizeof("1\0""2") // 4