Есть ли какая-либо мыслимая причина, по которой я увижу разные результаты, используя строковые литералы Unicode, по сравнению с фактическим шестнадцатеричным значением для UChar.
UnicodeString s1(0x0040); // @ sign
UnicodeString s2("\u0040");
s1 не эквивалентен s2. Почему?
UnicodeString
-- определено ли оно отделением интенсивной терапии? - person Kerrek SB   schedule 16.11.2011"\u0040"
просто не определен четко (то есть он определяется реализацией). Так что я думаю, что мы не можем ответить на это в целом. Если бы это была строка UTF-8 (u8"\u0040"
), мы могли бы быть в лучшей форме. - person Kerrek SB   schedule 16.11.2011\u
и\U
в этом контексте. Вот мой предыдущий пост на эту тему. - person Kerrek SB   schedule 16.11.2011\u
– это экранирующая последовательность, представляющая собой лексическую особенность грамматики C++, используемую для литеральных значений. Вы не можете прочитать его из файла. (Де)сериализация всегда требует документирования формата. - person Kerrek SB   schedule 16.11.2011keyname {"some text \u0040"}
, и точно отображать текст для ключа в UnicodeString. - person Ternary   schedule 16.11.2011"terminate()"
, ваша программа останавливается... - person Kerrek SB   schedule 16.11.2011UnicodeString("\u0040")
иUnicodeString("\\u0040")
есть принципиальная разница! - person Kerrek SB   schedule 16.11.2011Since ICU is not a compiler extension, the "unescaping" is done at runtime and the backslash itself must be escaped (duplicated) so that the compiler does not attempt to "unescape" the sequence itself.
Из userguide.icu-project.org/strings< /а> - person Ternary   schedule 16.11.2011