Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Вхождение любого двузначного числа в строку


Автор: dream 30.3.2005, 10:09
Всем привет! Помогите, плиз.
Задача: Текстовый файл. Построчное считывание. Если в строке имеется любое двузначное число, то строка выводится на печать.
Как реализовать проверку на вхождение в строку двузначных чисел?
Заранее сэнкс

Автор: DENNN 30.3.2005, 10:42
Например так
Код

int iDigit;
CString str;
...
if ( iDigit=str.FindOneOf("0123456789") )
  if ('0'>=str[iDigit] && '9'<=str[iDigit])
      print"Ye-e-e-e-e-e-e-es!!!!!!!!!!!!!";

Добавлено @ 10:44
Или даже в более копактной форме
Код

int iDigit;
CString str;
...
if ( iDigit=str.FindOneOf("0123456789") && '0'>=str[iDigit] && '9'<=str[iDigit] )
  print"Ye-e-e-e-e-e-e-es!!!!!!!!!!!!!";


А вообще, с этой задачей очень хорошо справляются регулярные выражения.

Автор: dream 30.3.2005, 10:51
Это, если я правильно понимаю, вариант нахождения числа как такого вообще? А двузначное как?

Автор: DENNN 30.3.2005, 11:45
Это именно двухзначное. Иначе зачем бы я такое городил? smile

Автор: dream 30.3.2005, 12:16
Спасибо большое, DENNN, но.... все не так просто :-). Это, как мне сказали с использованием MFC, а нужно с WinAPI :-(

Автор: Олег М 30.3.2005, 12:45
Цитата(dream @ 30.3.2005, 13:16)
Спасибо большое, DENNN, но.... все не так просто :-). Это, как мне сказали с использованием MFC, а нужно с WinAPI :-(

Ну, если с винАПИ
Код

int n=0;
for (TCHAR *psz=pszSrc; *psz; ++psz)
{
    if (!::IsCharAlpha(*psz) && IsCharAlphaNumeric(*psz)) //Если цифра
      ++n ;
   else 
   {
      if (n==2) break;
      n=0;
    }
}

if (n==2) Печатаем

Автор: dream 30.3.2005, 13:07
smile
Большое всем спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)