2012-06-06 114 views
0

我正在使用Borland C++ Builder 6試圖做一些簡單的字符串連接。但是,我遇到了我認爲是一個有趣的問題。Borland C++ Builder 6和字符串連接

一切我能在網上找到狀態,我應該能夠做這樣簡單的事情,因爲這:

String word = "a" + "b" + "c"; 

然而,當我嘗試編譯這段代碼,我得到一個「無效的指針相加」錯誤。我可以儘可能將每個部分分配給自己的變量,並將每個部分加在一起以獲得所需的輸出。然而,我認爲這是多餘的,因爲這是一個簡單的例子。

我已經能夠獲得類似上述的東西工作,因爲所需的唯一途徑就是通過這樣做:

String a = ""; 
String word = a + "a" + "b" + "c"; 

我的問題是:爲什麼會在第二個例子中工作得很好,但不第一?

回答

2

的原因是,"a"類型是char*(即:指針到字符),當你寫

"a" + "b" 

您要添加到一起指針,這是不允許的,這意味着。

當你創建一個String類型,operator+超載如此

String a = ""; 
a + "b" 

增加了一個指針到字符到String,它有自己的級聯確定指標。

+0

我明白了。所以基本上,如果我想以這種方式添加字符串,我應該使用上面提供的第二個示例。儘管我認爲它是奇怪的行爲(我通常是C#程序員) –

+1

@ hawk4031 - 正確。你也可以使用一個匿名的String對象:'String word = String(「a」)+「b」;' – Attila

0

我不太確定,但這可能是因爲爭論。第一行中的「a」是char*,因此添加其他字符串仍然會導致char*的結果,並且無法直接將其指定給String對象。第二種情況表明,如果第一個參數是String類型,則所有結果都是字符串,因此可以進行賦值。