2016-07-21 9 views
-4

Ich versuche, mehrere ganze Zahlen in einer int-Variable zu speichern. So wie folgt aus:C++ Speichern mehrerer Ganzzahlen in einer int-Variablen

int num1 = 2; 
int num2 = 6; 
int num3 = num1 + num2; 

Aber ich bekomme 8. Ich möchte 26 Ich weiß, dies ist das Ergebnis sollte ich erwarten würde, aber ich würde wie ein Verfahren zur Herstellung der ganzen Zahlen zusammen zu binden, anstatt sie das Hinzufügen und ich Ich konnte mir kein besseres Beispiel vorstellen.

Vielen Dank!

+0

Sie sind nicht einmal falsch – Isaac

+0

Warum versuchen Sie, mehrere Werte in einem einzigen int zu speichern? Ist das eine Code-Golf-Übung oder bist du einfach verrückt? Es ist natürlich unmöglich, mehrere * int * -Werte in einem * int * zu speichern, da ich den maximalen int-Wert nicht mehr als einmal in einem int speichern kann. – Olipro

+0

_ @ Toxic_ Wie generisch brauchst du das? Könnten "num1" und "num2" tatsächlich "9" überschreiten? –

Antwort

4

Sie können sie in String konvertieren, fügen Sie sie, und wandeln sie zurück (die als zweite Option nicht effizient ist)

int num3 = std::stoi(std::to_string(num1) + std::to_string(num2)); 

oder eine „mathy“ Art und Weise (das funktioniert nur, wenn num2 ist nur eine Ziffer)

int num3 = num1 * 10 + num2; 

Beachten Sie, dass die erste Lösung für beliebige Zahlen arbeitet, was auch bedeutet, dass die Länge der Nummer ohne Speicherung gibt es keine Möglichkeit, die ursprünglichen Zahlen zurück zu bekommen.

+0

Ich hatte genau die gleiche Antwort getippt, als ich deine sah erscheinen :) –

+0

Ich würde 'std :: pow 'dafür nicht verwenden.Eine for-Schleife, die mit zehn multipliziert, wird viel schneller für eine beliebige Anzahl von Iterationen sein, die in ein "int" passen. Wenn Sie auch beliebige Längen zulassen, werden Informationen verloren gehen. Sie würden nicht wissen, wo sie sich trennen sollen, um num3 wieder auseinander zu nehmen. – user4581301

+0

Müssen Sie hier etwas (oder etwas Ähnliches) einfügen? Weil ich den folgenden Fehler habe: Namespace "Std" hat kein Mitglied "to_string". Namespace "std" hat auch kein Mitglied "stoi" – Toxxic

0

Nun, was ist mit dem Hinzufügen der Ziffern multipliziert und gedrückt, um ihre vorgesehenen Positionen?

int num3 = num1 * 10 + num2; 
-1

Sie würden sie speichern müssen als Strings sie so verketten, wie so:

string str_num1 = to_string(num1); 
string str_num2 = to_string(num2); 
string result = num1 + num2; 

Dies ist eine schlechte Art und Weise es aber, weil zu tun, wenn Sie eine beliebige Anzahl verwenden, die nicht 1 Stelle ist, es wird viel zu kompliziert, um die Daten zu speichern und/oder herauszuziehen.

Verwenden Sie einen Vektor oder ein Paar. Viel einfacher und weniger Ärger:

pair<int, int> presult = make_pair(num1, num2); ///or 
vector<int> vresult; 
vresult.push_back(num1); 
vresult.push_back(num2); ///num1 in spot 0, num2 in spot 1 

Vektor sollte am besten sein, da es beliebig große Anzahl von Ints halten kann

+0

Weise zu kompliziert. Keine Strings notwendig. –

+0

Yah, Strings sind zu komplex, deshalb Vektor oder Paar ist viel besser – Dylan

+0

Nun, vergleichen Sie Ihre Antwort zu mir? Warum brauchst du eigentlich alles, was du an STL-Sachen magst? –

0

Ich denke, man die beiden Stringliterale verketten möchten.
Convert the int to string und dann concatenate the two strings Dies gibt Ihnen die verkettete Zeichenfolge „26“ von den Saiten „2“ und „6“ Wenn Sie die int 26 benötigen, dann können Sie convert it back in einen int nach der Verkettung. Viel Glück :-)

+0

Woops, ich schaue auf, nachdem ich eine Antwort eingegeben habe und schon sind 3 andere da! –

+0

passiert manchmal. – user4581301

+0

@RickD Ich würde mich in diesem Fall nicht für String-Operationen entscheiden, die einfach albern und kompliziert erscheinen. –