2012-05-11 71 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

相關問題