小编Kor*_*ray的帖子

如何用空终止字符memset char数组?

使用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)
  • 这些中的任何一个都有明显的优势吗?
  • 使用1,2或3可以面对哪些问题?
  • 处理此请求的最佳方法是什么?

c++ arrays memset null-terminated c++11

15
推荐指数
3
解决办法
7万
查看次数

带有'='(等号)符号的C++命令行参数

如果它包含等号,我如何解析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的任何指示.但是,删除等号将正确打印.

c++ command-line-arguments

2
推荐指数
1
解决办法
2111
查看次数