我知道人们普遍认为使用strcmp
是比较字符串的正确方法,但我的问题是为什么?根据帮助:
A == B在A和B之间进行逐元素比较 并返回一个大小相同的矩阵,其元素设置为逻辑1 其中关系为true,元素设置为逻辑0 不
我能提出的所有玩具示例似乎都有效。
答案 0 :(得分:7)
==
使用逐字符比较,因此尝试使用两个不同长度的字符串来测试与==
的相等性应该会给您一个错误。
答案 1 :(得分:7)
strcmp
还会检查输入是否为char类,例如strcmp('a',double('a'))
返回false,但'a' == double('a')
返回true。 strcmp
干净地处理空输入,您也不必担心两个字符串长度相同。您可以使用单元格输入轻松比较多个有用的字符串。
字符串比较可能会更慢 - 至少在当前的Matlab中。但是,不要以牺牲可读性和可维护性为代价过早地优化代码。仅在极少数情况下才使用==
(或者isequal
),当您确实需要表现并且非常确定您要比较的内容时(首先使用ischar
和isempty
,例如)。
答案 2 :(得分:6)
另一个小例外是空字符串。
在if语句中使用'' == ''
求值为false。
strcmp('','')
是真的。