使用Visual Studio 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);

    }

起初,我使用stoi()代替了atoi(),但我不断抛出异常,说stoi(超出范围)。我将代码复制并粘贴到Notepad ++(进行了很小的调整),并通过Putty终端在GNU编译器上对其进行了编译,效果很好。我放弃使用stoi()并尝试使用atoi()和c_str()首先将字符串转换为c字符串,然后将其转换为int。但是,尽管我不再遇到异常,但输出始终为0x ^ -1。因为我是新手,所以我尝试了尽可能多地使用我熟悉的C ++东西(因此,为什么我使用C ++字符串而不是Microsoft的String ^来完成所有操作),但是由于某种原因它在Visual Studio中不起作用。请问对此有什么帮助,我将不胜感激。谢谢。

评论