8

我知道人们普遍认为 usingstrcmp是比较字符串的正确方法,但我的问题是为什么?根据帮助:

A == B 在 A 和 B 之间进行逐个元素的比较,并返回一个大小相同的矩阵,其中元素设置为逻辑 1,表示关系为真,元素设置为逻辑 0,表示关系不成立。

我能想出的所有玩具例子似乎都奏效了。

4

3 回答 3

7

==使用逐字符比较,因此尝试==使用两个不同长度的字符串测试是否相等应该会给您一个错误。

于 2013-10-03T16:23:10.103 回答
7

strcmp还检查输入是否为 char 类,例如,strcmp('a',double('a'))返回 false,但'a' == double('a')返回 true。strcmp干净地处理空输入,您也不必担心两个字符串的长度相同。您可以使用单元格输入轻松比较多个有用的字符串。

字符串比较可能会慢很多——至少在当前的 Matlab 中是这样。但是不要以牺牲可读性和可维护性为代价过早地优化你的代码。仅在您确实需要性能并且非常确定要比较的内容(例如,首先使用和)的极少数情况下使用==(或可能)。isequalischarisempty

于 2013-10-03T18:49:17.187 回答
6

另一个小例外是空字符串。

使用'' == ''in if 语句的计算结果为 false。

strcmp('','')是真的。

于 2013-10-03T18:56:09.417 回答