Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с wchar_t в boost::format, VStudio не дает скомпилить с wformat 
V
    Опции темы
avn
Дата 7.9.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 25.10.2005

Репутация: нет
Всего: нет



Добрый день!

Пытаюсь в Visual Studio 2008 сделать следующее:

Код

#include <boost\format.hpp>

using boost::format;

void Test (void)
{
    double a, b;

    a = -15;
    b = 3.176;

    wformat (L"%g + %g = %g%c") %a %b %(a + b) %1045;
}



А в ответ:

Цитата

error C3861: 'wformat': identifier not found


Boost собран с помощью BoostPro, версия 1.39.0 .

Я заглянул в format_fwd.hpp :
Код

#if !defined(BOOST_NO_STD_WSTRING)  && !defined(BOOST_NO_STD_WSTREAMBUF) \
    && !defined(BOOST_FORMAT_IGNORE_STRINGSTREAM)
    typedef basic_format<wchar_t >  wformat;
#endif


Тогда я сделал принудительно:

Код

#undef BOOST_NO_STD_WSTRING
#undef BOOST_NO_STD_WSTREAMBUF
#undef BOOST_FORMAT_IGNORE_STRINGSTREAM


Все равно не сработало.

В чем дело? Есть подозрение, что BoostPro собирает ANSI-версию только. Хотя я не помню там конкретизации на эту тему.

Это сообщение отредактировал(а) avn - 7.9.2009, 15:18
PM MAIL   Вверх
andrew_121
Дата 7.9.2009, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



...

Это сообщение отредактировал(а) andrew_121 - 7.9.2009, 15:33


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
avn
Дата 7.9.2009, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 25.10.2005

Репутация: нет
Всего: нет



Причем так все компилируется:

Код

#include <boost\format.hpp>
using boost::format;
void Test (void)
{
    double a, b;
    a = -15;
    b = 3.176;
    format ("%g + %g = %g%c") %a %b %(a + b) %1045;
}


Это сообщение отредактировал(а) avn - 7.9.2009, 15:34
PM MAIL   Вверх
avn
Дата 7.9.2009, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 25.10.2005

Репутация: нет
Всего: нет



Знатоки, вы где  smile  ??? Подскажите что-нибудь, пожалуйста, большая программа стоит! Приходится извращаться - готовить строки в ANSI, потом перегонять в Unicode, а это -  smile 
PM MAIL   Вверх
andrew_121
Дата 7.9.2009, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Код

#include <boost\format.hpp>
void Test (void)
{
    double a, b;
    a = -15;
    b = 3.176;
    boost::wformat (L"%g + %g = %g%c") %a %b %(a + b) %1045;
}



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
avn
Дата 7.9.2009, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 25.10.2005

Репутация: нет
Всего: нет



Ща попробую...
Получилось! Спасибо!
Как оказалось, чтобы не писать boost::wformat, достаточно объявить using namespace boost помимо using boost::format.
PM MAIL   Вверх
MTWizard
Дата 7.9.2009, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 8.10.2007
Где: Київ

Репутация: 3
Всего: 4



Цитата(avn @  7.9.2009,  14:58 Найти цитируемый пост)
using boost::format;

Надо было написать
Код

using boost::wformat;

PM MAIL   Вверх
andrew_121
Дата 7.9.2009, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(MTWizard @  7.9.2009,  17:17 Найти цитируемый пост)
Надо было написать

вне функции, или своего пространства имен, такого лучше не делать.


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
bsa
Дата 7.9.2009, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(avn @ 7.9.2009,  17:00)
Как оказалось, чтобы не писать boost::wformat, достаточно объявить using namespace boost помимо using boost::format.

Думаю, для начала нужно изучить основый С++. В частности, пространства имен. А так же почитать умные книжки, в которых доступным языком объяснят, почему using .... делать не стоит, как ты делаешь.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0653 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.