Google C++ Template

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
Аватара пользователя
Decoder
Сообщения: 308
Зарегистрирован: 19 фев 2008, 23:11
Откуда: Moscow

Всем привет.
Кто-нибудь уже имел дело с библиотекой шаблонов C++ Template от Google? А так же с библиотекой функций Google safe library.
Если кто уже использовал их, поделитесь опытом.
Поумнеть несложно, куда труднее от дури избавиться.
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

Cобственно пример приведён непосредственно в самой документации.
Here is a simple template file:
Hello {{NAME}},
You have just won ${{VALUE}}!
{{#IN_CA}}Well, ${{TAXED_VALUE}}, after taxes.{{/IN_CA}}
Here is a C++ program to fill in the template, which we assume is stored in the file 'example.tpl':
cpp Код:

[LEFT]

Код: Выделить всё

[color=Blue]#include[/color] [color=DarkRed]<stdlib.h>[/color]
[color=Blue]#include[/color] [color=DarkRed]<string>[/color]
[color=Blue]#include[/color] [color=DarkRed]<iostream>[/color]  
[color=Blue]#include[/color] [color=DarkRed]<google/template.h>  [/color]

int main(int argc, char** argv) 
{
        google::TemplateDictionary dict([color=DarkRed]"example"[/color]);
        dict.SetValue([color=DarkRed]"NAME", "John Smith"[/color]);
        [color=Blue]int[/color] winnings = rand() % 100000;
        dict.SetIntValue([color=DarkRed]"VALUE"[/color], winnings);
        dict.SetFormattedValue([color=DarkRed]"TAXED_VALUE"[/color],[color=DarkRed] "%.2f"[/color], winnings * 0.83);
        [color=Green]// For now, assume everyone lives in CA.
        // (Try running the program with a 0 here instead!)[/color]
   [color=Blue]      if[/color] (1) {
            dict.ShowSection([color=DarkRed]"IN_CA"[/color]);
        }
        google::Template* tpl = google::Template::GetTemplate([color=DarkRed]"example.tpl"[/color],
        google: :D O_NOT_STRIP);
        std::string output;
        tpl->Expand(&output, &dict);
        std::cout << output;
        [color=Blue]return[/color] 0;
}
[/LEFT]

Шаблон текста может находиться как в отдельном файле, так и в виде строки внутри приложения.

В Visual C++ 2005 уже есть safe-реализация функций стандартной библиотеки С/С++, это те же функции, только с суффиксом _s на конце, например: fopen_s вместо fopen, sprintf_s вместо sprintf, и т.д.
Так что использовать Safe library от Google в последних версиях Visual C++ наверно смысла особого нет.
Ответить