比较两个 C 风格字符串的正确函数是什么?

What is the proper function for comparing two C-style strings?(比较两个 C 风格字符串的正确函数是什么?)
本文介绍了比较两个 C 风格字符串的正确函数是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我进退两难了.我需要比较两个 C 风格的字符串,然后搜索最合适的函数:

So I have a dilemma. I need to compare two C-style strings and I searched for the functions that would be the most appropiate:

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)

我认为第一个是地址,所以这个想法已经出来了.第二个听起来对我来说是最好的选择,但我还是想听听反馈.其他三个让我一无所知.

The first one I think is for addresses, so the idea is out. The second one sounds like the best choice to me, but I wanna hear feedback anyway. The other three leave me clueless.

推荐答案

对于一般的字符串比较,strcmp 是合适的函数.您应该使用 strncmp 仅比较字符串中的一些字符(例如,前缀),并使用 memcmp 比较内存块.

For general string comparisons, strcmp is the appropriate function. You should use strncmp to only compare some number of characters from a string (for example, a prefix), and memcmp to compare blocks of memory.

也就是说,由于您使用的是 C++,因此您应该完全避免这种情况并使用 std::string 类,它比 C 风格的字符串更易于使用且通常更安全.您只需使用 == 运算符即可轻松比较两个 std::string 的相等性.

That said, since you're using C++, you should avoid this altogether and use the std::string class, which is much easier to use and generally safer than C-style strings. You can compare two std::strings for equality easily by just using the == operator.

希望这会有所帮助!

这篇关于比较两个 C 风格字符串的正确函数是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Image Capture with OpenCV - Select Timeout Error(使用 OpenCV 捕获图像 - 选择超时错误)
SHA256 HMAC using OpenSSL 1.1 not compiling(使用 OpenSSL 1.1 的 SHA256 HMAC 未编译)
How to make a Debian package depend on multiple versions of libboost(如何制作一个Debian包依赖于多个版本的libboost)
Why does strcpy_s not exist anywhere on my system?(为什么我系统上的任何地方都不存在 strcpy_s?)
Simplest way to get current time in current timezone using boost::date_time?(使用 boost::date_time 在当前时区获取当前时间的最简单方法?)
Qt debian/ubuntu: Can#39;t compile, error: cannot find -lGL(Qt debian/ubuntu:无法编译,错误:找不到-lGL)