Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Format() vs WideFormat()

376
02 июня 2009 года
Absolut
220 / / 22.11.2002
Есть задача вывести в WideString значение типа double по формату "%.1f", то есть с одним знаком после запятой.

Вызываю код :

double value = 98.59;
WideString valueStr = WideFormat( L"%.1f", ARRAYOFCONST((value)) );

В результате в строке имею "9", а хотелось бы "98.5" или "98.6". Аналогичный код, но с AnsiString работает как надо.

В чем может быть засада ?
376
29 июня 2009 года
Absolut
220 / / 22.11.2002
Вижу что идей ни у кого нет. Тогда поставлю вопрос иначе. Семейство каких функций предпочтительнее использовать для форматирования строк типа WideString (юникода вообще)? Хотелось бы не отвлекаться на размер строк, т.е. не использовать функций типа *wprintf(), *wscanf(). А STL wstring не удобно использовать для форматированного ввода/вывода. Идеальным был вариант типа WideFormat(), но он оказался глючным. См. первый пост.
288
29 июня 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: Absolut
Вижу что идей ни у кого нет. Тогда поставлю вопрос иначе. Семейство каких функций предпочтительнее использовать для форматирования строк типа WideString (юникода вообще)? Хотелось бы не отвлекаться на размер строк, т.е. не использовать функций типа *wprintf(), *wscanf(). А STL wstring не удобно использовать для форматированного ввода/вывода. Идеальным был вариант типа WideFormat(), но он оказался глючным. См. первый пост.



Дейстивтельно поведение странное. Похоже функция рассматривает то, что задано в prec как длину всей строки. Не сталкивался с таким, да и в инете на эту тему ничего не нашел.
Альтернатива: форматировать все числа с помощью Format, а потом просто переводить их в WideString (но это по-моему извращение), либо написать свою версию, основанную на wprintf() (что довольно-таки не сложно, хотя это и изобретение велосипеда).

376
29 июня 2009 года
Absolut
220 / / 22.11.2002
Цитата: nikitozz
Альтернатива: форматировать все числа с помощью Format, а потом просто переводить их в WideString (но это по-моему извращение)



Собственно так пока и делаю, однако, когда приходится чередовать числа и символы юникода в итоговой строке это выглядит ещё более извращенно.

А какие всё таки типы из STL заточены на форматированный ввод/вывод ?

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог