我在使用 C++Builder 12 社区版构建的 C++ 控制台程序中的参数方面遇到了问题。
如果可执行文件位于名称中带有空格的文件夹中,例如"test dir"
,并且我从另一个文件夹中的控制台会话调用它,则我的代码提取的参数不正确。如果可执行文件路径没有空格,则一切正常。如果我在 IDE 中运行它,它也可以正常工作。在 Visual Studio 22 下构建的代码也可以正常工作。
CPP测试.cpp
#include <iostream.h>
int main(int argc, char* argv[])
{
cout << "argc: " << argc << "\n";
cout << "argv0: " << argv[0] << "\n";
cout << "argv1: " << argv[1] ;
return 0 ;`
}
可执行文件位于名为的目录中"Misc projects"
,CWD 是"C:\Junk"
:
C:\Junk>C:\"Misc projects"\CPPtest 3 8
argc: 2 ## INCORRECT: Should be 3
argv0: c:\Misc projects\CPPtest.exe
argv1: projects\CPPtest 3 8 # INCORRECT should be 8
在 Visual Studio 22 中运行时,相同的代码可以正确运行。