C ++: Удаление всех звездочек из строки, где звездочки НЕ являются символами умножения

Итак, в принципе, у меня может быть какая-то строка, которая выглядит примерно так: «эй, это строка * эта строка потрясающая 97 * 3 = 27 * эта строка классная».

Однако эта строка может быть огромной. Я пытаюсь удалить все звездочки из строки, если только эта звездочка не представляет собой умножение. Эффективность здесь в некоторой степени важна, и у меня возникли проблемы с тем, чтобы придумать хороший алгоритм, чтобы удалить из него все звездочки, не связанные с умножением.

Чтобы определить, предназначена ли звездочка для умножения, я, очевидно, могу просто проверить, зажата ли она между двумя числами.

Таким образом, я подумал, что могу сделать что-то вроде (псевдокода):

wasNumber = false
Loop through string
   if number 
      set wasNumber = true
   else
      set wasNumber = false
   if asterisk
      if wasNumber
         if the next word is a number
            do nothing
         else
            remove asterisk
      else
         remove asterisk

Однако, что ^ уродлив и неэффективен на огромной строке. Можете ли вы придумать лучший способ сделать это в C ++?

Кроме того, как я могу проверить, является ли слово числом? Допускается десятичное число. Я знаю, что есть функция, которая проверяет, является ли символ числом ...

6
задан Ioan Paul Pirau 28 July 2011 в 17:25
поделиться