2016-04-09 14 views
-1

Ich habe eine sehr einfache Frage. Wie könnte ich mehrere Zeichen in C++ verketten? Zum Beispiel möchte ich Ausdrücke wie diese gültig machen:mehrere Verkettungszeichen in C++

Call_Function ('a' + 'b' + 'c' + 'd'); Erwartetes Ergebnis: "abcd";

Aufruf_Funktion ("a" + 'b' + "c"); Erwartetes Ergebnis: "abc";

Vielen Dank im Voraus.

+0

verkürzen Es muss gesagt werden, dass das erwartete Ergebnis auch std :: string sein kann und nicht nur ein const char *. Auf der anderen Seite wird erwartet, dass der Ausdruck der aufgerufenen Funktionen genauso geschrieben wird, wie es ist, d. H. Es ist kein Cast erlaubt. Ist es in C++ möglich? –

+0

Ist es ein wörtliches Zeichen, oder kommen sie aus einer Variablen? – Jarod42

+0

Es kann eine Mischung aus beidem sein. Sie könnten zum Beispiel haben: char x; Call_Function ("a" + x + "b"); oder Call_Function ('a' + x + 'b'); –

Antwort

0

Für Verkettung von Zeichenketten, können Sie der Präprozessor den Job

"hello" " world" Ergebnisse in "hello world" tun lassen.

mit Variablen, desto einfacher ist std::string zu verwenden und operator +

std::string s; 

s + "Hello" + ' ' + "world" in std::string("Hello world")

In c führen würde ++ 14, kann es mit

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

Ja, das stimmt, aber könnte ich den Operator + überladen oder irgendeine andere Konstruktion erstellen, damit die Argumentausdrücke genau wie im Beispiel geschrieben werden können? –

+0

Genau nicht, da 'char + char' oder' char * + int' bereits eine Bedeutung hat. aber C++ 14 führt eine Verknüpfung ein, um 'std :: string' zu erstellen. – Jarod42

+0

Danke! Beziehen Sie sich auf Operator "" s oder was genau meinen Sie mit neuer C++ 14 Verknüpfung? –