strrchr导致'无法从const char *转换为char *'

时间:2012-03-05 20:00:42

标签: c++ string visual-studio-2010

我正在尝试编译一些给我的代码,我被告知编译好了。也许在不同的编译器上。我正在使用VS2010,我有以下几行:

char *dot = strrchr(filename, '.');

这会导致编译错误:

  

“错误C2440:'初始化':无法从'const char *'转换为   'char *'

为什么?我该如何解决?

2 个答案:

答案 0 :(得分:7)

错误信息非常清楚。 strrchr会返回const char*。所以你需要:

const char *dot = strrchr(filename, '.');

如果您确实需要char*,则可以使用strcpy进行转换。

答案 1 :(得分:5)

由于重载,C ++的strchrstrrchr的版本比C大,所以说:

const char * dot = strrchr(filename, '.');

在没有重载的C中,你只有一个函数char * strrchar(const char *, const char *),由你来决定结果是常数还是可变的,这取决于要输入函数的指针类型。 C有很多这种类型不安全的函数。

相关问题