int H[500]; // global int array
int main()
{
    int check[500];
    bool same = true;
    string input;
    cout << "Enter Numbers: ";
    getline(cin, input);
    istringstream buf(input);
    istream_iterator<string> beg(buf), end;
    vector<string> tokens(beg, end);
    int temp = 1;
    for (auto& s : tokens)  // error: expected initializer before ‘:’ token
    {
        H[temp] = atoi(s.c_str());
        check[temp] = atoi(s.c_str());
        temp++;
    }
    for (int ii = 1; ii < temp; ii++)
        heapsort(temp);//cpp:43: error: expected primary-expression before ‘for’
                      //         error: expected ‘;’ before ‘for’
                      //         error: expected primary-expression before ‘for’
                      //         error: expected ‘)’ before ‘for’

    return 0;
}

尝试在腻子上编译时出现这些错误。它在Visual Studio上运行良好。感谢您能获得的任何帮助。谢谢。

编辑:
我在腻子上使用“g++ -0 filename filename.cpp”。

最佳答案

Putty不是编译器,而是终端程序,因此,我假设通过腻子来指的是带有g++clang++的远程Linux或Unix。我还将假定您具有所有必要的include和and namespace 指令,例如using namespace std;语句,因为您已经说过已在其他地方成功编译了此代码。

我认为您的问题是您需要将-std=c++11添加到编译器参数中。

另外我会使用strtol或更好的stringstream而不是atoi,因为使用atoi时无法检查错误,因此如果输入不正确, vector 中最终会出现一堆零。

关于c++ - 将字符串转换为int数组时,无法使程序在腻子上运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40417783/

10-11 17:50