Domanda

Everytime I compile this C++ code I get a thread exception I can't understand. What is wrong here?

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

int main(int argc, char* argv[]) {
    string arg = argv[1];

    if (arg == "-r")
        cout << "First arg is -r" << endl;

    return 0;
}  
È stato utile?

Soluzione

You forgot to check argc>=2 before assigning argv[1] to the string arg.
Are you sure you are running this program with passing a parameter?

A possible correction:

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

int main(int argc, char* argv[]) 
{
    if(argc<2)
    {
      cerr << "Not enough parameters" << endl;
      abort();
    }

    string arg = argv[1];

    if (arg == "-r")
        cout << "First arg is -r" << endl;

    return 0;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top