种类的参数 [英] sort of arguments

查看:97
本文介绍了种类的参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int comp(const void *a, const void *b){
char *const *aa=a;
char *const *bb=b;
return strcmp(*aa,*bb):


}
int main(int argc,char **argv){

int i;
  qsort(argv+1,argc-1,sizeof *argv,comp);
   for (i=1;i<argc;i++)
       printf("i: %d==> '%s'\n",i,argv[i]);
   return 0;


}

但这里是错误

Error   1   error C2440: 'initializing' : cannot convert from 'const void *' to 'char *const *' c:\users\student\documents\visual studio 2008\projects\sort_argv\sort_argv\sort_argv.cpp    5   sort_argv
Error   2   error C2440: 'initializing' : cannot convert from 'const void *' to 'char *const *' c:\users\student\documents\visual studio 2008\projects\sort_argv\sort_argv\sort_argv.cpp    6   sort_argv

错误3错误C2143:语法错误:缺少';'before':'

Error 3 error C2143: syntax error : missing ';' before ':'

c:\users\student\documents\visual studio 2008\projects\sort_argv\sort_argv\sort_argv.cpp    7   sort_argv

错误4错误C2143:语法错误:缺少';'before':'

Error 4 error C2143: syntax error : missing ';' before ':'

c:\users\student\documents\visual studio 2008\projects\sort_argv\sort_argv\sort_argv.cpp    7   sort_argv

请帮助

推荐答案

c $ c> sort 而不是 qsort 此外, argv 的元素不得被变异,因为它们(隐含地,对于C后向兼容性)声明 const 。因此,您需要将它们复制到其他地方:(显然不是真的。)

In C++, use sort instead of qsort. Furthermore, the elements of argv must not be mutated since they are (implicitly, for C backwards compatibility) declared const. Therefore, you need to copy them somewhere else: (Apparently not true.)

#include <string>
#include <vector>
#include <algorithm> // for sort

int main(int argc, char const* argv[]) {
    std::vector<std::string> args(argv, argv + argc);
    std::sort(args.begin(), args.end());
}

(请注意,此解决方案使用 string 向量而不是C字符串和C风格的数组,这是没有必要的,但它使代码更容易和更短。)

(Notice that this solution uses string and vector instead of C strings and C-style arrays where possible. That’s not necessary but it makes the code much easier and shorter.)

这篇关于种类的参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆