我对C++编程非常陌生,我通过阅读书籍来了解基本知识。我遇到了两个有趣的函数strcmpi()和stricmp()。我知道,这两个函数通过忽略字符串的大小写来按字母顺序比较字符串。所以我只想知道他们之间的区别。
任何帮助都将不胜感激.
发布于 2014-12-13 04:39:34
这两个函数都执行完全相同的操作(只要您坚持比较普通的ASCII字符串)。
问题是,这两个标准都不是ANSI C标准的一部分,所以您不能确定这些标准中的任何一个都适用于给定的编译器。
对于相同的功能,您还可以有其他名称。例如,_strcmpi()。
在C/C++中没有标准的不区分大小写的比较原语,因此每个编译器都提供了自己的版本,名称不同。
最好的“标准”变体将是国际标准化组织C++ _stricmp,但我不会打赌地球上的每个编译器都支持它。
这背后的原因是,区分大小写的问题并不像看上去那么简单,因为各种语言的对话和扩展的字符编码都是如此。
虽然普通的ASCII字符串总是以相同的方式进行比较,但在尝试比较UTF16字符串或其他扩展字符集时,您可以预期实现上的差异。
从这篇文章的角度来看,一些C++极客似乎也有很大的兴趣重写他们自己的版本。
发布于 2014-12-13 04:39:10
strcmpi和stricmp是strcmp的不区分大小写的版本。他们在所有其他方面都是一样的。_strcmpi和_stricmp是strcmpi和stricmp的替代名称。strcasecmp是strcmpi的别名。
int strcmp (const char *string2 1,const char *string2 2);
int strcmpi (const char *string2 1,const char *string2 2);
int stricmp (const char *string2 1,const char *string2 2);
https://stackoverflow.com/questions/27455559
复制相似问题