На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела FAQ в группе разделов С++.
1. Раздел FAQ предназначен для публикации готовых статей.
2. Здесь нельзя задавать вопросы, для этого существуют соответствующие разделы:
Чистый С++
Visual C++ / MFC / WTL / WinApi
Borland C++ Builder
COM / DCOM / ActiveX / ATL
Сопутствующие вопросы
3. Внимание, все темы и сообщения в разделе премодерируются. Любое сообщение или тема будут видны остальным участникам только после одобрения модератора.
Модераторы: B.V., Qraizer
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> Преобразование строки в число и обратно , часть первая
    А вторая часть ФАКа уже вышла? :)
      Вот кстати есть еще одна простая функция преобразования строки в число:

      ExpandedWrap disabled
        int var;
        char str[100];
         
        var=StrToInt(str);


      Для её работы необходимо в настройках проекта Project->Settings->Link добавить shlwapi.lib
      И заголовочные файлы:

      #include <windows.h>
      #include <shlwapi.h>

      И вот может кому-нить пригодится, у меня была лабораторная записать арифмитическое выражение как строку и вычислить его,
      вроде работает, только в конце введенного выражния нужно обязательно точку ставить (операции выполняются в порядке их следования):

      ExpandedWrap disabled
        char str[512]="", temp[512]="";
        bool b=true;
        int var=0;
         
        printf_rus("\nВведите арифметическое выражение: ", 27);
         
        cin>>str;
         
        for (i=0, j=0; i<strlen(str); i++)
        {
            if (str[i]!='+' && str[i]!='-' && str[i]!='/' && str[i]!='*' && str[i]!='.')
            {
                temp[j]=str[i]; j++;
            }
            else
            {
                if (b) { var+=StrToInt(temp); b=false; }
            
                else
                {
                    if (str[i-2]=='+') { var+=StrToInt(temp); }
                    if (str[i-2]=='-') { var-=StrToInt(temp); }
                    if (str[i-2]=='/') { var/=StrToInt(temp); }
                    if (str[i-2]=='*') { var*=StrToInt(temp); }
                }
         
                j=0;
            }
        }
         
        printf_rus("\nОтвет: ", 27); printf("%i\n", var);
        Цитата Maxidrom @
        Вот кстати есть еще одна простая функция преобразования строки в число
        Это специфичная для Windows функция. Никакого практического смысла в ее использовании нет.
          А чё никто не упомянул самые что ни на есть стандартные фасеты std::num_get<> и std::num_put<> вкупе с итераторами от std::basic_string<>, а то и простыми указателями? Как показывает практика, производительность не только boost::lexical_cast<> отдыхает, но зачастую - правда это уже зависит от конкретной реализации - и C-функции покуривают.

          Сообщения были разделены в тему "фасеты STL vs функции RTL"
          Сообщение отредактировано: Qraizer -
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0320 ]   [ 15 queries used ]   [ Generated: 1.05.24, 19:46 GMT ]