2010-12-06 30 views
1

的字符串這是非常沒有意義的,麻煩的是,每次你需要連接兩個字符串就必須至少做:C++重載+運營商爲了始終串連各種

std::string mystr = std::string("Hello") + " World"; 

我想超載運算符+並使用它以便始終在這個char *之間進行連接:

std::string mystr = "Ciao " + "Mondo". 

你會怎麼做?我想找一個最佳做法。謝謝你...

啊確實有提升有東西來解決這個問題嗎?

+6

你知道,一個問號就足以表明某件事是一個問題,連續使用其中的六個並不會使問題變得更加複雜,除非你的貓坐在鍵盤上,否則沒有任何理由因爲它 – jalf 2010-12-06 12:27:00

+0

你是對的,我很抱歉... – Andry 2010-12-06 12:32:51

回答

5

你不能讓+這樣工作。要定義運算符重載,至少有一個操作數必須是用戶定義的類型。

但是,該功能內置於:如果只是將兩個字符串文字放在一起"like" "this",它們將在編譯時自動連接在一起。

2

你不行。沒有辦法在內置類型之間重載運算符。 我也不確定它爲什麼如此「麻煩」。如果你做了很多字符串操作,那麼肯定會有一個或兩個參數已經std::string類型。

1

你不能。想一想 - 什麼是「Ciao」​​和「Mondo」,真的嗎?它們是靜態的字符數組。您不能添加靜態數組在一起,因爲編譯器會很有幫助指出以下代碼:

#include <iostream> 

int main() 
{ 
    std::string mystr = "Ciao " + "Mondo"; 
    std::cout << mystr << std::endl; 
    return 0; 
} 

(輸出:

In function 'int main()': 
Line 5: error: invalid operands of types 'const char [6]' and 'const char [6]' to binary 'operator+' 

這就是它這是相當多的欺騙:const char* concatenation