Каждый раз, когда я компилирую этот код C ++, я получаю исключение потока, которое я не могу понять. Что здесь не так?
#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;
}
Вы забыли проверить argc>=2
перед назначением argv [1] в строку arg
,
Вы уверены, что запускаете эту программу с передачей параметра?
Возможная коррекция:
#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;
}
Других решений пока нет …