Нужно распарсить строку, для этого необходимо найти позицию знака
^
это действие выполняю при помощи данного куска кода
pos = 0;
if( pos = part.find( "^" ) != std::string::npos )
{
n = atoi( part.substr( pos + 1 ).c_str() );
}
при вводе строки
2*x
или
x^2
данный код работает как часы (адекватно находит позицию или отсутствие знака), но если ввести
2*x^2
то pos становиться равным 1, хотя должен быть равен 3
Согласно приоритету операторов
pos = part.find( "^" ) != std::string::npos
выполняется так:
сначала выполняется part.find( "^" ), результат сравнивается с std::string::npos и результат сравнения присваивается pos.
Т.е. как
pos = (part.find( "^" ) != std::string::npos)
Вы же, наверное, хотели получить функциональность
(pos = part.find( "^" )) != std::string::npos
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости