Format() vs WideFormat()
Вызываю код :
double value = 98.59;
WideString valueStr = WideFormat( L"%.1f", ARRAYOFCONST((value)) );
В результате в строке имею "9", а хотелось бы "98.5" или "98.6". Аналогичный код, но с AnsiString работает как надо.
В чем может быть засада ?
Вижу что идей ни у кого нет. Тогда поставлю вопрос иначе. Семейство каких функций предпочтительнее использовать для форматирования строк типа WideString (юникода вообще)? Хотелось бы не отвлекаться на размер строк, т.е. не использовать функций типа *wprintf(), *wscanf(). А STL wstring не удобно использовать для форматированного ввода/вывода. Идеальным был вариант типа WideFormat(), но он оказался глючным. См. первый пост.
Цитата: Absolut
Вижу что идей ни у кого нет. Тогда поставлю вопрос иначе. Семейство каких функций предпочтительнее использовать для форматирования строк типа WideString (юникода вообще)? Хотелось бы не отвлекаться на размер строк, т.е. не использовать функций типа *wprintf(), *wscanf(). А STL wstring не удобно использовать для форматированного ввода/вывода. Идеальным был вариант типа WideFormat(), но он оказался глючным. См. первый пост.
Дейстивтельно поведение странное. Похоже функция рассматривает то, что задано в prec как длину всей строки. Не сталкивался с таким, да и в инете на эту тему ничего не нашел.
Альтернатива: форматировать все числа с помощью Format, а потом просто переводить их в WideString (но это по-моему извращение), либо написать свою версию, основанную на wprintf() (что довольно-таки не сложно, хотя это и изобретение велосипеда).
Цитата: nikitozz
Альтернатива: форматировать все числа с помощью Format, а потом просто переводить их в WideString (но это по-моему извращение)
Собственно так пока и делаю, однако, когда приходится чередовать числа и символы юникода в итоговой строке это выглядит ещё более извращенно.
А какие всё таки типы из STL заточены на форматированный ввод/вывод ?