2012-05-11 73 views
0

在Matlab中,以下语句给出了一个数字输出。 。为什么'+'运算符的行为与Matlab字符串一样?

>> 'abc' + 'def' 

ans = 

    197 199 201 

在C++中,以下

std::string("abc") + std::string("def") 

输出...将给说是更有益的...

abcdef 

多一点探索出..

>> a = 'abc' 

a = 

abc 

>> whos 
    Name  Size   Bytes Class Attributes 

    a   1x3     6 char 

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

因此一个对象,我的问题是:什么 会使用这个数字输出是什么?

...导致

他们为什么要设计它的行为呢?

+1

“因为这是怎样的语言[和API]定义。”这就是它的全部。使用'+'作为字符串concat并没有被普遍接受为正确的。例如,它甚至被认为是Scala(从Java借来的)中的一个“小设计缺陷”。 – 2012-05-11 14:53:05

+1

我认为在C++中猖獗的操作符“重新定义”实际上是有害的 - 您需要阅读文档才能找出最简单的操作符。 Matlab可以让你在一定程度上做到这一点 - 但人们不会。 – Marc

回答

7

因为在Matlab中的字符串是从字面上只是char类型的数组,所以它等同于:

[97 98 99] + [100 101 102] 

它不是一成不变的那+意思是“串联”。如果你想在Matlab字符串连接,你总是可以做:

['abc' 'def'] 
+0

所以我应该想到它在容器中的原始字符? – learnvst

+0

@learnvst:如果你喜欢。但它实际上只是一个整数的行向量('char's)。 –

+2

作为另一个例子,horzcat函数(horizo​​ntal concatenate)和['abc'def']的函数相同 – tmpearce

相关问题