2017-12-08 1 views
-3

Ich versuche, 5 ganze Zahlen in einer Zeichenfolge zu speichern, aber ich habe Probleme. Hier ist der Code:Speichern mehrerer Ganzzahlen in einer Zeichenfolge

for (int a = 0; a < 5; a++) 
     { 
      string ans; 
      int number; 
      int num; 
      number = rand() % 9 + 1; 
      cout << number << " "; 
      num = number; 
      to_string(num); 
      ans =+ num; 
     } 

Im Grunde möchte ich „am“ etwas entlang der Linien zu sein von „12345“, aber wenn ich es laufen, entweder es zeigt nichts oder zeigt 5 Boxen mit Fragezeichen in ihnen. Irgendeine Hilfe?

+1

Sie sind in der Nähe, aber Sie wollen 'ans + = to_string (num);'. –

+0

Bitte zeigen Sie echten Code anstelle dieses offensichtlich gefälschten Codes, der möglicherweise nichts Substanzielles anzeigen kann, da es hier keine einzige Codezeile gibt, die den Wert von ans anzeigen könnte, den Sie vorgeben zu sehen. Außerdem wird der Wert von "ans" bei jeder Iteration der Schleife zerstört.Das einzige, was Sie als Antwort auf gefälschten Code bekommen, sind gefälschte Antworten. –

+0

Viele Probleme zuerst 'to_string (num)' tut nichts, es sollte sein 'ans + = to_string (num)' auch 'ans' sollte vor der if-Anweisung sein. –

Antwort

0

Sie können etwas tun:

string ans; 
int number; 

for (int a = 0; a < 5; a++){ 
    number = rand() % 9 + 1; 
    ans += to_string(number); 
} 
cout << ans; 
+0

Wirklich, was für mich funktionierte, war ans = ans + to_string (num)! Vielen Dank! – zhodges10

+1

'ans + = to_string (num)' wird gegenüber 'ans = ans + to_string (num) bevorzugt' –

0

to_string() gibt eine Zeichenfolge zurück. Sie können einfach versuchen zu tun: ans += to_string(num);

Oder besser Sie Ihren Code für eine bessere Lesbarkeit zu schreiben, ist ein temporäres String-Variable zu verwenden, anstatt ein int num die Nummer zu speichern.

string temp; 
    string ans; 
    for (int a = 0; a < 5; a++) 
    { 
     //string ans; 
     int number; 
     //int num; 
     number = rand() % 9 + 1; 
     cout << number << " "; 
     //num = number; 
     temp = to_string(number); 
     ans += temp; 
    } 

Sie wollen nicht Ihre string ans innerhalb der for-Schleife erklären, weil jedes Mal, wenn die Schleife läuft, Sie ans nicht den vorherigen Wert mehr halten, da es wieder erklärt wird.

0

eine Reihe von Problemen mit Ihrem Code Es gibt keine.

  • Sie ans innerhalb der Schleife deklarieren, so wird erstellt und auf jeder Schleife Iteration zerstört. Wenn Sie möchten, dass die Schleife 5 Zahlen an ans anfügt, müssen Sie sie stattdessen außerhalb der Schleife deklarieren.

  • std::to_string() gibt einen neuen std::string als Rückgabewert aus. Es verwandelt den Eingabewert nicht "magisch" in einen Stringtyp, wie es von Ihrem Code angenommen wird. Sie hängen die zurückgegebene Zeichenfolge überhaupt nicht an ans an.

  • =+ ist kein gültiger Append-Operator. Es wird als separate Operatoren = und + interpretiert. std::string hat keinen Operator =, der eine int als Eingabe nimmt und keinen unären Operator + hat. Sie müssen stattdessen den Operator += verwenden.

Try this:

#include <string> 
#include <iostream> 

std::string ans; 
for (int a = 0; a < 5; ++a) 
{ 
    int number = ... 
    ... 
    ans += std::to_string(number); 
} 
// use ans as needed... 

Alternativ verwenden std::ostringstream statt std::to_string():

#include <string> 
#include <sstream> 
#include <iostream> 

std::ostringstream oss; 
for (int a = 0; a < 5; ++a) 
{ 
    int number = ... 
    ... 
    oss << number; 
} 
std::string ans = oss.str(); 
// use ans as needed... 

Mit gesagt, dass Sie C++ 11 deutlich mit (wenn std::to_string() eingeführt wurde) oder später, also sollten Sie einen C++ - Zufallszahlengenerator anstelle desjenigen von C verwenden, zB:

#include <random> 

std::random_device rd; 
std::mt19937 gen(rd()); 
std::uniform_int_distribution<> dis(1, 9); 

for (int a = 0; a < 5; ++a) 
{ 
    int number = dis(gen); 
    ... 
} 
+0

'= +' ist gültig, wird aber als 2 separate Operatoren geparst –

Verwandte Themen