为什么'+'运算符的行为方式与Matlab字符串相同?

lea*_*vst 0 string matlab operator-overloading

在Matlab中,以下语句给出了数字输出..

>> 'abc' + 'def'

ans =

   197   199   201
Run Code Online (Sandbox Code Playgroud)

在C++中,输出如下

std::string("abc") + std::string("def") 
Run Code Online (Sandbox Code Playgroud)

...会给予可能更有用的......

abcdef
Run Code Online (Sandbox Code Playgroud)

多一点探索给..

>> a = 'abc'

a =

abc

>> whos
  Name      Size            Bytes  Class    Attributes

  a         1x3                 6  char   
Run Code Online (Sandbox Code Playgroud)

这表明我的变量a是一种char类型.但是,我们知道这不等同于C类型的char,因为它是一个知道其大小尺寸等的对象.

因此,我的问题是:这个数字输出有什么用?

...导致

为什么他们会把它设计得像那样?

Oli*_*rth 7

因为Matlab中的字符串实际上只是一个char类型的数组,所以它相当于:

[97 98 99] + [100 101 102]
Run Code Online (Sandbox Code Playgroud)

它并非一成不变,+意思是"连接".如果你想在Matlab中进行字符串连接,你总是可以这样做:

['abc' 'def']
Run Code Online (Sandbox Code Playgroud)

  • 作为另一个例子,函数`horzcat`(水平连接)与['abc'def']的作用相同 (2认同)