Извлечь число из строки и присвоить его переменной.

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Извлечь число из строки и присвоить его переменной.

What hosting to choose?

GeorgeSoca » 16 окт 2015, 12:29

On our web, you can feel safe! Besides we use mirrored hard drives on all of our servers so we also take backup twice a day on separate servers. We use ISPmanager as the control panel. ISPmanager is a control panel that makes it easy to administer its Web site. With us you can place as many websites and domains you wish for a hosting account.
virtual hosting

Re: Извлечь число из строки и присвоить его переменной.

WinMain » 10 ноя 2007, 18:22

Принцип предложенного алгоритма понятен: сначала найти в строке первый символ, который является цифрой, а затем проверять последующие символы, являются ли они цифрами. Из полученной последовательности цифр формируется число. Но как быть, если число имеет не только целую, но и дробную часть, т.е. разделено десятичной запятой или точкой? К тому же число может быть не только положительным, но и отрицательным, т.е. иметь знак минус. Так же чисел в строке может быть несколько: дата, время, номер телефона...
Я бы предложил другой принцип извлечения чисел из строки: сначала строка разбивается на отдельные слова, а затем каждое слово проверяется на возможность преобразования его в число с помощью стандартных функций, типа atoi() и atof(). В отдельных случаях можно проверять слова, содержащие цифры, на соответствие формату даты, времени или чего-то другого...
Для расчленения строки на слова удобно использовать класс istrstream из стандартной библиотеки С++.

Re: Извлечь число из строки и присвоить его переменной.

Adamant » 09 ноя 2007, 21:38

Как на ваш взгляд такое решение:

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

int main()
  {
    FILE * fp;
    int i = 0, j = 0;
    char str[] = "qwerty   123456789  цшашц 1234 ";
    char str2[] = "";
    if( ( fp = tmpfile() ) == 0 )
      {
        puts( "Can not create temporary file" );
        Sleep( 2000 );
        exit ( 1 );
      }

    while( str[i] )
      {
        if( isdigit( str[i] ) )
          {
            while( isdigit( str[i] ) ) // извлечь только первое число
              {
                if( str[i] == '\0' )
                  break;
                fputc( str[i], fp );
                i++;
              }
            break;
          }
        i++;
      }
    rewind( fp );
    fgets( str2, 80, fp );
    fclose( fp );
    if( !strlen( str2 ) )
      puts( "Numbers is not found" );
    else
      puts( str2 ); // выводит    123456789
На мой взгляд приемлеемый вариант. Интересна любая критика
профи.
С уважением Вячеслав.

Извлечь число из строки и присвоить его переменной.

Adamant » 09 ноя 2007, 17:06

Уважаемые кодеры! Помогите недотепе! :confused:
Есть некая строка:
char str[] = "\"Некая строка\" 12345";
Как из нее извлечь число "12345" и присвоить его например: int str_ind
Не могу сообразить. Подскажите(желательно на простых Сях). :cool:

Вернуться к началу