Преобразуйте много символических выражений из x^2 или x^3 в pow(x,n)

У меня есть много символических выражений с символом власти, которые я хочу скопировать в программу на C++. Однако у них есть символ власти ^ который не используется в C. Любой совет для быстрого изменения? Должен ли я использовать регулярные выражения я могу сделать GCC, чтобы увидеть ^ как pow()?

1 ответ

Решение

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

Но вы можете сойти с простого регулярного выражения:

замещать (\w+)\s*\^\s*(\w+) с pow(\1,\2),

Это должно охватывать большинство случаев и быть достаточно безопасным.

Конечно, это не удастся, если есть больше параметров, как в (a + b) ^ (c + d) и т.д. Это регулярное выражение соответствует только такие вещи, как a^b или же 2^3, Это также не соответствует x^0.5 правильно, так что если это может произойти, вам нужно ([\w.]+)\s*\^\s*([\w.]+)

Другие вопросы по тегам