Портативный wchar_t в C++

Попробуйте это:

message = { "source": "datapipeline",
            "application_nm": "omni",
            "severity": "2",
            "batch_run_start_dttm": "$actualStartTime",
            "batch_run_end_dttm": "actualEndTime",
            "batch_run_status_cd": "failed",
            "job_orchestration_id": "NA",
            "stage_nm": "NA",
            "stage_start_dttm": "NA",
            "stage_end_dttm": "NA",
            "stage_status_cd":  "failed",
            "job_run_id": "NA",
            "source_nm": "NA",
            "target_nm": "NA",
            "source_details": "NA",
            "target_details": "NA",
            "msg": "These mentioned hours having difference more than 50% from previous week:" +"%s"  ,
            "counts":"0",
            "notes": "After hourly comparison check, the above mentioned hours is having difference more than 50%",
            "list": list # this is how to do it
          }

Кстати, очень плохая идея назвать переменную «list», которая конфликтует со встроенной функцией list().

5
задан Anteru 21 January 2009 в 21:56
поделиться

2 ответа

Если Вы имеете дело с использованием, внутренним к программе, не волнуйтесь об этом; wchar_t в классе A совпадает с в классе B.

Если Вы планируете передать данные между Windows и версиями Linux/MacOSX, у Вас есть больше, чем wchar_t для волнения о, и необходимо придумать средства обработать все подробности.

Вы могли определить тип, который Вы определите, чтобы быть четыре байта везде и реализовать Ваши собственные строки, и т.д. (так как большая часть текстовой обработки в C++ является шаблонной), но я не знаю, как хорошо, который работал бы на Ваши потребности.

Что-то как typedef int my_char; typedef std::basic_string<my_char> my_string;

4
ответ дан 14 December 2019 в 04:49
поделиться

Что Вы подразумеваете "под портативным wchar_t"? Существует a uint16_t введите, который 16 битов шириной везде, который часто доступен. Но это, конечно, еще не составляет строку. Строка должна знать о своем кодировании для понимания функций как length(), substring() и так далее (таким образом, это не сокращает символы посреди кодовой точки при использовании utf8 или 16). Существуют некоторые unicode совместимые строковые классы, которые я знаю, которых можно использовать. Все могут использоваться в коммерческих программах бесплатно (QT, каждый будет совместим с коммерческими программами бесплатно через несколько месяцев, когда Qt 4.5 будет выпущен).

ustring от gtkmm проект. Если Вы программируете с gtkmm или используете glibmm, который должен быть предпочтительным вариантом, он использует utf-8 внутренне. Qt также имеет строковый класс, названный QString. Это кодируется в utf-16. ICU другой проект, который создает портативные unicode строковые классы и имеет a UnicodeString класс, который внутренне, кажется, кодируется в utf-16, как QT. Не использовали тот все же.

3
ответ дан 14 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: