|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.06.2012, 21:10 | #1 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Как считать из объекта типа stringstream в буфер TCHAR
Доброго времени суток! Как считать из объекта типа stringstream в буфер TCHAR при использовании опции проекта "Использовать Юникод кодировку"?
Код:
|
02.06.2012, 01:26 | #2 |
Пользователь
Регистрация: 03.01.2011
Сообщений: 49
|
Используй объекты для широких строк. Добавляй w спереди.
wstringstream s; |
02.06.2012, 01:55 | #3 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
када то мудохолся с подобной темой. Не придумал ничего умнее топора:
Код:
Последний раз редактировалось _Bers; 02.06.2012 в 01:57. |
02.06.2012, 05:42 | #4 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Спасибо, _Bers! То что нужно!
Моя вина. В своём вопросе я забыл добавить, что и при использовании опции: "Использовать многобайтовую кодировку", тоже должно работать. Всё-равно спасибо! Такой вариант может пригодиться, плюсую! |
02.06.2012, 11:35 | #5 |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Вот такой вариант нашёл:
Код:
|
02.06.2012, 12:13 | #6 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Там видишь, в чем сложность то: литерные константы в исходном коде виндузятные компили воспринимают исключительно как мультибайт (если ничего не путаю), что в условиях, когда нужно поддерживать юникод, вынуждает, нас пасти эти ситуации и юзать всякие макросы аля _T(), или L(), и тп.
Фейлы начинаются, когда хочется единообразно пихать в функцию и литерную константу, и готовый объект. Я привык к моральному std::string, и к тому, что char весит 1 байт, а не "хрен пойми чего в зависимости от чего-то там" Поэтому, решил минимизировать точки контроля над ситуаций непосредственно в исполняющие функции. А вот снаружи синтаксис должен быть стабилен и прост: Код:
А если он это не умеет, значит нужно вызывать такой механизм, который умеет. И сам будет всем рулить. А вот здесь очень доступно и замечательно описаны дрязги с юникодом под форточками: http://wm-help.net/books-online/prin.../59464-13.html |
02.06.2012, 12:39 | #7 | |
Старожил
Регистрация: 02.01.2011
Сообщений: 3,327
|
Цитата:
|
|
02.06.2012, 13:19 | #8 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
Однако деление на мультибайт/юникод критично только при дерганье модулей, которые взаимодействуют с системой (дергают winapi, либо готовят материалы для тех, кто будет дергать winapi). Моя идея заключается в том, что в рамках собственного приложения не используются никакие макросы вообще. Используется обычный std::string and char. мы не пишем вот так: Код:
Код:
Тогда получается: что внутри своего приложения чар стабильно весит 1 байт. А что именно будет скормлено winapi меня (моё приложение) вообще не заботит. Профит тут ещё в том, что используя стандартные std::string and char в коде целевого приложения, можно не просто обеспечить поддержку кодировок, но и совместимость кода msc/mingw/gcc То бишь, код, учитывающий политику Зла может взлететь и под Linux |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблемы с созданием объекта своего типа,С# | roadzero | Помощь студентам | 4 | 04.04.2011 17:23 |
ошибка 1004 при удалении объекта типа Range | Red_Garry | Microsoft Office Excel | 2 | 26.02.2011 15:12 |
CLR. Ошибка C3918. Как вызвать из объекта обработчик, переданный родителю объекта от деда? | Stilet | Общие вопросы .NET | 0 | 15.01.2011 17:49 |
считать данные из переменной типа String | 1o1man | Помощь студентам | 13 | 17.04.2009 22:34 |
Преобразование типа объекта | Oburec | Общие вопросы Delphi | 4 | 12.04.2009 14:20 |