2016-04-09 38 views
-1

我有一個非常簡單的問題。 我如何連接C++中的多個字符?例如,我想使這些表達式如下所示有效:C++中的多個級聯字符

Call_Fu​​nction('a'+'b'+'c'+'d'); 預期成果:「abcd」; Call_Fu​​nction(「a」+'b'+「c」);其中, 預期成果:「abc」;

在此先感謝。

+0

它必須被縮短可以這樣說,預期的結果可以是std :: string也不只是一個const char *。另一方面,被調用函數的表達式預計會被完全寫入,即不允許進行轉換。在C++中可能嗎? –

+0

它是字面字符,還是來自變量? – Jarod42

+0

它可以是兩者的組合。你可以有例如:char x; Call_Fu​​nction(「a」+ x +「b」);或Call_Fu​​nction('a'+ x +'b'); –

回答

0

對於字符串文字的串聯,你可以讓預處理器做的工作

"hello" " world"結果"hello world"

與變量,簡單的就是用std::stringoperator +

std::string s; 

s + "Hello" + ' ' + "world"會導致std::string("Hello world")

在C++ 14,它可以與

using namespace std::string_literals; // for operator ""s 
"Hello"s + ' ' + world 
+0

是的,沒錯,但是我可以重載operator +還是創建其他任何構造,以使參數表達式可以像例子中那樣完全寫入? –

+0

確實不是,因爲'char + char'或'char * + int'已經有了意義。但是C++ 14引入了創建'std :: string'的快捷方式。 – Jarod42

+0

謝謝!你是指操作符「」還是你指的是新的C++ 14快捷鍵? –