比较两个C风格字符串的正确函数是什么
What is the proper function for comparing two C-style strings?
所以我陷入了进退两难的境地。我需要比较两个C风格的字符串,并搜索最合适的函数:
memcmp //Compare two blocks of memory (function)
strcmp //Compare two strings (function )
strcoll //Compare two strings using locale (function)
strncmp //Compare characters of two strings (function)
strxfrm //Transform string using locale (function)
我认为第一个是地址,所以这个想法已经出来了。第二个对我来说是最好的选择,但无论如何我都想听听反馈。其他三个让我一无所知。
对于一般字符串比较,strcmp
是合适的函数。应该使用strncmp
只比较字符串中的一些字符(例如前缀),使用memcmp
比较内存块。
也就是说,由于您使用的是C++,因此应该完全避免这种情况,并使用std::string
类,它比C风格的字符串更容易使用,而且通常更安全。只需使用==
运算符,就可以轻松比较两个std::string
的相等性。
希望这能有所帮助!
memcmp
和strcmp
都可以正常工作。要使用前者,您需要提前知道较短字符串的长度。
相关文章:
- 初始化或分配空字符串文字到指向 C 中的 char 的指针或指向 C++ 中 const char 的指针的原因是什么
- 在C++17中,引用const字符串的语义应该是什么
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- 字符串上的 C++ push_back() 和 pop_back() 的 Kotlin 是什么?
- 这里的字符串函数是什么意思
- 将位字符串转储到二进制文件的最佳方法是什么
- 是什么使这个以'+'开头的字符串添加成为有效的语句?
- 在c++中,减号和加号对字符串的作用是什么
- 当我们已经有 char[] 时,在 c++ 中字符串的必要性是什么?
- C++ 将字符串数据包转换为 iphdr语言 - 字符串数据包的格式应该是什么?
- 这句话是什么意思?半 += 字符串(频率[i] / 2, i + 'a');
- Xamarin Android:在 C++ 中将字符串从 C# 封送到 Unicode 字符串的正确方法是什么?
- 使用c 中的sort()函数对字符串进行排序的最坏情况是什么是什么
- 字符串文本不能有外部链接的原因是什么?
- 当我打印字符串时,我不知道它是什么输出
- 字符串中单个字符作为数组的数据类型是什么
- 检查字符串是否与可能的输入之一匹配的最有效方法是什么?
- '|' scanf 格式字符串是什么意思
- 一个字符串开始另一个字符串是什么意思?c++
- 表示文件路径的guid字符串是什么?