Нужно распарсить строку, для этого необходимо найти позицию знака
^
это действие выполняю при помощи данного куска кода
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
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В связи с сложностями которые возникают в связи с импортом классов при явном подключении DLL (с помощью winapi), стоит ли его использовать, есть...
Есть задачка, найти сколько чисел до 1000 в которых не повторяются цифрыПытаюсь решить простым перебором, каждого числа в стринг и далее проверяю...
Для вывода даты используя формат в таком виде: