我是 C++ 编程的新手,正在通过阅读书籍了解基础知识。
我遇到了两个有趣的函数 strcmpi()
和 stricmp()
。
我知道这两个函数都通过忽略字符串的大小写来按字典顺序比较字符串。
所以我只想知道它们之间的区别。
如有任何帮助,我们将不胜感激。
最佳答案
这两个函数做完全相同的事情(只要您坚持比较纯 ASCII 字符串)。
问题是,这两者都不是 ANSI C 标准的一部分,因此您不能确定其中任何一个都适用于给定的编译器。
对于相同的功能,您还可以使用其他名称。 _strcmpi()
例如。
C/C++ 中没有标准的不区分大小写的比较原语,因此每个编译器都提供了自己的版本,名称各不相同。
最好的“标准”变体是 ISO C++ _stricmp
,但我敢打赌目前地球上的每个编译器都支持它。
其背后的原因是区分大小写并不像看起来那么微不足道,因为各种语言的所有变音符号和扩展的字符编码都是如此。
虽然纯 ASCII 字符串总是以相同的方式进行比较,但在尝试比较 UTF16 字符串或其他扩展字符集时,您可能会发现实现上的差异。
根据 this article 判断,一些 C++ 极客似乎也很喜欢重写他们自己的版本。
关于C++:字符串函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27455559/