C++ c++;未输入参数时应用程序崩溃

C++ c++;未输入参数时应用程序崩溃,c++,arguments,C++,Arguments,我正在创建一个基于命令行的加密软件。这里有一个if语句,用于检查是否没有参数,并以代码1退出 if (argc = 0) { errorExit("No arguments listed. Type \"-h\" for help.", 1); } errorExit()位于我创建的头文件中 int errorExit(string errMsg, int errorCode) { cerr << "Error: "; cerr << errMsg; cerr

我正在创建一个基于命令行的加密软件。这里有一个if语句,用于检查是否没有参数,并以代码1退出

if (argc = 0) {
    errorExit("No arguments listed. Type \"-h\" for help.", 1);
}
errorExit()位于我创建的头文件中

int errorExit(string errMsg, int errorCode) {
cerr << "Error: ";
cerr << errMsg;
cerr << endl;
exit(errorCode);
return NULL;
为了消除混淆,我在mingw中使用了代码块,以防它是mingw中的一个bug


编辑:我意识到我的argc=0而不是argc==0。我意识到了错误,但仍然没有解决问题。

主函数可以这样声明:

int main (int argc, char *argv[]);
在命令行中调用该程序时,argv[0]将是可执行文件的名称,这意味着如果没有其他参数,argc应为1

Z:\Code\C++\CodeBlocks\simplecrypt\bin\Debug>simplecrypt.exe
terminate called after throwing an instance of 'std::logic_error'
   what():  basic_string::_S_construct null not valid

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Z:\Code\C++\CodeBlocks\simplecrypt\bin\Debug>
if(argc == 0){...

Write==和not=在if条件下

对于start,如果您将“if(argc=0)”更改为“==”比较运算符,您很可能希望返回
0
而不是
NULL
。虽然它通常意味着同一件事,但混合使用
int
NULL
只会让人感到困惑。看到一个完整的例子会很好。任何将
NULL
定义为裸
0
以外的任何东西的人都是人类的眼中钉。你需要发布更多相关的代码,因为在大多数系统上
argc
至少是1(
argv[0]
==程序名)。。因此,代码永远不会运行,此外,即使它确实运行了,您发布的代码中也没有任何内容表明应该抛出
basic\u string::\u s\u construct null not valid
异常。。请提供一个。那么,argc永远不会为0?