我对C ++编程很陌生,并通过阅读书籍了解基础知识。
我遇到了两个有趣的函数strcmpi()
和stricmp()
。
我知道这两个函数都是通过忽略字符串的情况来按字典顺序比较字符串。
所以我只想知道它们之间的差异。
我们将不胜感激。
答案 0 :(得分:3)
两个函数完全相同(只要你坚持比较普通的ASCII字符串)。
问题是,它们都不是ANSI C标准的一部分,所以你不能确定任何这些都可用于给定的编译器。
您可以使用其他名称来实现相同的功能。例如_strcmpi()
。
C / C ++中没有标准的不区分大小写的比较原语,因此每个编译器都提供自己的版本,其名称各不相同。
最好的“标准”变体是ISO C ++ _stricmp
,但我不打赌这个星球上的每个编译器目前都支持它。
背后的原因是区分大小写并不像看起来那么简单,各种语言的所有变音符和扩展的字符编码都是如此。
虽然普通的ASCII字符串将始终以相同的方式进行比较,但在尝试比较UTF16字符串或其他扩展字符集时,您可能会遇到实现上的差异。
从this article判断,一些C ++极客似乎也会重写他们自己的版本。
答案 1 :(得分:0)
strcmpi和stricmp是strcmp的不区分大小写的版本。它们在所有其他方面的工作方式相同。 _strcmpi和_stricmp是strcmpi和stricmp的备用名称。 strcasecmp是strcmpi的别名。
int strcmp(const char * string1,const char * string2);
int strcmpi(const char * string1,const char * string2);
int stricmp(const char * string1,const char * string2);