使用null终止字符memset整个字符数组的正确和最安全的方法是什么?我可以列出一些用法:
...
char* buffer = new char [ARRAY_LENGTH];
//Option 1: memset( buffer, '\0', sizeof(buffer) );
//Option 2 before edit: memset( buffer, '\0', sizeof(char*) * ARRAY_LENGTH );
//Option 2 after edit: memset( buffer, '\0', sizeof(char) * ARRAY_LENGTH );
//Option 3: memset( buffer, '\0', ARRAY_LENGTH );
...
Run Code Online (Sandbox Code Playgroud)
如果它包含等号,我如何解析C++中的命令行选项?一个例子是:
./testApp --parameter1=value1
Run Code Online (Sandbox Code Playgroud)
我使用以下行来检查参数是否确实存在:
bool cmdOptionExists(char** begin, char** end, const std::string& option)
{
return std::find(begin, end, option) != end;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果参数包含等号,则返回false
cmdOptionExists(argv, argv+argc, "parameter1");
Run Code Online (Sandbox Code Playgroud)
甚至打印:
for(int i=0;i<argc;i++)
printf("Argument: %s\n", argv[i]);
Run Code Online (Sandbox Code Playgroud)
不包括parameter1的任何指示.但是,删除等号将正确打印.