我执行C ++程序时,Ubuntu给出“无法执行二进制文件”错误

时间:2014-02-18 01:29:31

标签: c++ bash visual-studio-2012 g++ executable

我刚刚在Visual Studio中编写了一些代码,并尝试通过shell在我学校的Linux服务器上运行它。代码在Visual Studio中运行良好,在Linux中符合g++但不能与bash *./a.out*bash *file_name*一起运行。我想有一些我正在使用的语法在VS 2012中是可以接受的,但是并没有转化为在服务器上运行。

该程序旨在确定两个用户输入的集合之间是否存在联合或交集。

有人可以看看我的代码告诉我我错过了什么吗?到目前为止,我不得不#include <cstring>进行编译,但除此之外没有任何其他内容。

#include <string>
#include <iostream>
#include <set>
#include <cstring>
using namespace std;

int main()
{
    string set1, set2;
    string extra1[100], extra2[100];
    cout<<"Enter your first set."<<'\n';
    getline(cin,set1);
    char *ch1 = new char[100];
    strcpy(ch1, set1.c_str());
    cout<<"Enter you second set."<<'\n';
    getline(cin,set2);
    char *ch2 = new char[100];
    strcpy(ch2, set2.c_str());
    int z = 0;
    for(int i = 0; i < set1.size(); ++i)
    {
        const char c = ch1[i];
        if(c == ' ')
        {
            ++z;
            continue;
        }
        else if (c == ',')
        {
            continue;
        }
        else if (c >= '0' && c <= '9')
        {
            extra1[z] += ch1[i];    

        }
        else
            continue;
    }   

    int capture = z + 1;
    int r = 0;

    for(int i = 0; i < set2.size(); ++i)
    {
        const char c = ch2[i];
        if(c == ' ')
        {
            ++r;
            continue;
        }
        else if (c == ',')
        {
            continue;
        }
        else if (c >= '0' && c <= '9')
        {
            extra2[r] += ch2[i];    

        }
        else
            continue;
    }   

    int capture2 = r + 1;

    int g = 0;

    string last[100];
    for(int i = 0; i < capture; ++i)
    {
        for(int h = 0; h < capture2; ++h)
        {
            if(extra1[i] == extra2[h])
            {
                last[g] = extra1[i];
                ++g;
            }
        }

    }
    set<string> newset1(last, last+100);
    set<string>::iterator it;
    cout<<"The numbers constitute the intersection between the sets.\n";
    for(it=newset1.begin(); it!=newset1.end(); ++it)
    {
        cout << *it<<' ';

    }   
    cout<<'\n';

    int w = 0;
    string last1[100];

    set<string> newset2(extra1, extra1+100);
    set<string> newset3(extra2, extra2+100);
    newset2.insert(newset3.begin(), newset3.end());
    set<string>::iterator it1;
    cout<<"This set constitutes a union between the two sets."<<'\n';
    for(it1=newset2.begin(); it1!=newset2.end(); ++it1)
    {
        cout << *it1<<' ';
    }   
    cout<<'\n';
}

0 个答案:

没有答案