Возникли проблемы с visual stuio 2019
Я только что начал использовать Visual Studio в первый раз. Я хотел попробовать использовать свои знания C++ для создания простого приложения windows. Предполагается, что приложение вычисляет простую производную от одного выражения, такую как 4x^2, 2x^3, 24x^5 и т. д. (Я собирался заставить его сделать больше, но сначала должен был убедиться, что это сработает) Однако это, похоже, не работает (по крайней мере, не в Visual Studio).
Что я уже пробовал:
Это код кнопки, которую пользователь будет нажимать для вычисления. Ответ должен быть отображен в label4:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { std::string expression; msclr::interop::marshal_context context; expression = context.marshal_as<std::string>(textBox1->Text); std::string firstNum; std::string firstExpr; for (int i = 0; i < expression.size(); ++i) { if (isdigit(expression.at(i)) == true) { firstNum = firstNum + expression.at(i); } else { int num = atoi(firstNum.c_str()); std::string powNum; powNum = powNum + expression.at(i + 2); int pow = atoi(powNum.c_str()); num = num * pow; --pow; firstExpr = std::to_string(num) + "x^"; firstExpr = firstExpr + std::to_string(pow); break; } } label4->Text = context.marshal_as<String^>(firstExpr); }
at first I used stoi() instead of atoi() but I kept getting an exception thrown saying stoi(out of range). I Copied and pasted the code to Notepad++ (with very minor tweaks) and compiled it on the GNU compiler through the Putty terminal and it worked just fine. I gave up with using stoi() and tried using atoi() and c_str() to first turn the string into a c string then convert it to an int. However, although I no longer get an exception, the output is always 0x^-1. I tried as much as possible to use the C++ stuff I am familiar with (hence why I did everything using C++ strings instead of Microsoft's String ^) since I am new to this but It's just not working in Visual Studio for some reason. Could I please get some help with this, I would greatly appreciate it. Thank you.
Rick York
Важно отметить, что это управляемый C++, а не стандартный C++. Я подозреваю, что это большая часть вашей проблемы. Я очень мало знаю об этом, поэтому ничем не могу вам помочь.
Member 14767000
Спасибо Вам за Ваш вклад!
jeron1
Можете ли вы установить точку останова и шагнуть через нее?
Member 14767000
Я пытался, но уже нашел правильное решение. Оказывается, что делать if(isdigit(...) == true) не очень хорошая идея, и что я должен на самом деле просто делать if((isdigit(...)). Спасибо, что откликнулись!