2016-11-19 3 views
-4

Angenommen, ich habe den folgenden CodeWie verketten Sie Zeichenfolgen durch abwechselnde Zeichen aus beiden Zeichenfolgen in C++?

std::string st1 = "ab"; 
std::string st2 = "xyz"; 

Ich möchte diese Strings verketten von Zeichen abwechselnd, so dass der Ausgang

std::string output = "axbyz"; 

ist, wie kann ich dies tun in C++?

Ich könnte mit '+' verketten.

+3

, die nicht Code ist, dass es so schwer zu beantworten kompilieren. Aber wenn Sie Arten von std :: string haben, können Sie sie mit einem '+' Operator verketten. –

+2

Nehmen Sie ein leeres Blatt Papier und einen Stift heraus. Schreiben Sie in einfachen, einfachen Schritten einen logischen Algorithmus auf, um diese Operation auszuführen. [Nachdem du deinen vorgeschlagenen Algorithmus mit deiner Gummiente besprochen hast] (https://en.wikipedia.org/wiki/Rubber_duck_debugging), sobald deine Gummiente zustimmt, dass dein Algorithmus funktioniert, übersetze ihn einfach direkt in C++. Mission erfüllt. –

+2

Nun, Sie tun es, indem Sie Zeichen nacheinander aus jeder der Zeichenfolgen nehmen und sie zu einer neuen Zeichenfolge verketten. Mit welchem ​​Teil davon hast du Schwierigkeiten? Über die Saiten schleifen? Zeichen von einer Zeichenkette an einem gegebenen Index erhalten? – hyde

Antwort

2

Der Ausgang wird alternative die Charaktere der einzelnen Strings:

std::string res = ""; 
for(int i = 0; i < std::max(a.size(), b.size()); i++){ 
    if (i < a.size()) 
     res += a[i]; 
    if (i < b.size()) 
     res += b[i]; 
} 
+0

Warum nicht einfach: Summiere sie direkt statt einer Schleife? – Raindrop7

+0

Sie hoffen, dass Sie einen qualitativ hochwertigen Compiler haben, der herausfinden kann, dass 'std :: max (a.size(), b.size())' eine Konstante ist und nur einmal ausgewertet werden muss jede Iteration der Schleife. –

+0

Weil das OP möchte, dass die Zeichen _alternating_ sind. – sygi

Verwandte Themen