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