【发布时间】:2021-10-29 11:12:37
【问题描述】:
我最近一直在做一个程序,但在某个步骤上有点卡住了。当程序从 shell 运行时,它会在没有传递参数时执行一个动作。也许有人可以帮助我,或指出正确的方向?
int main(int argc, char* argv[])
{
string paramPassed = argv[1];
if(paramPassed == "")
cout << UseDriver();
else if(paramPassed == memMap)
cout << UseMemMap();
else{
if(paramPassed == help)
cout << PrintProgramHelp();
else if(paramPassed == helpMin)
cout << PrintProgramHelp();
else
cout << "Wrong selection. Input --help or -h for more options." << endl;
}
cout << "Press any key to continue." << endl;
cin.get();
return (0);
}
上面没有输入的代码给了我:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_M_construct null not valid
我能做什么?如果我在程序启动时没有提供任何参数,它会给我一个分段错误。
这里有什么我遗漏的吗?
【问题讨论】:
-
先计算你的论点(
argc是有原因的),否则你只是要求各种 UB。