Wie konvertiere ich eine long
in eine string
in C++?Wie konvertiere ich eine lange in eine Zeichenfolge in C++?
Antwort
Sie könnten Stringstream verwenden.
Es gibt normalerweise einige proprietäre C-Funktionen in der Standardbibliothek für Ihren Compiler, die es auch tut. Ich bevorzuge jedoch die "tragbaren" Varianten.
Der C-Weg wäre mit sprintf, aber das ist nicht sehr sicher. In einigen Bibliotheken gibt es neue Versionen wie sprintf_s, die vor Pufferüberläufen schützen.
Auschecken std::stringstream
.
#include <sstream>
....
std::stringstream ss;
ss << a_long_int; // or any other type
std::string result=ss.str(); // use .str() to get a string back
Es ist std :: string, nicht std :: String. – avakar
Danke - Finger Ärger. –
Die Art, wie ich es normalerweise mache, ist mit Sprintf. Also für eine lange könnten Sie wie folgt vorgehen davon aus, dass Sie auf einem 32-Bit-Architektur sind:
char buf[5] = {0}; // one extra byte for null
sprintf(buf, "%l", var_for_long);
-1. Während ein C++ - Compiler Ihren Code kompiliert, sollte er sicherlich nicht C++ heißen. Außerdem bezweifle ich 5 Zeichen ist genug. – avakar
Bitte sprechen Sie nicht Sprintf in dieser Zeit. Haben wir nicht genug Pufferüberlauf-Exploits? Nicht, dass dieser Code so geschrieben zu haben scheint - aber man weiß nie, wie sich die Dinge ändern. – philsquared
Phil, der Puffer wird für eine beliebige Zahl über 10000 überlaufen. – avakar
int main()
{
long mylong = 123456789;
string mystring;
stringstream mystream;
mystream << mylong;
mystring = mystream.str();
cout << mystring << "\n";
return 0;
}
mehrere Möglichkeiten gibt es. Lesen Sie The String Formatters of Manor Farm für einen ausführlichen Vergleich.
Das ist ein guter Artikel. – Skurmedel
Ja. Dies ist mindestens das dritte Mal, dass ich es auf SO verlinkt habe. 8v) –
Nun, wenn Sie Fan von Copy-Paste, hier ist es:
#include <sstream>
template <class T>
inline std::string to_string (const T& t)
{
std::stringstream ss;
ss << t;
return ss.str();
}
Ich weiß nicht, welche Art von Hausaufgaben ist dies, aber die meisten wahrscheinlich der Lehrer will nicht eine Antwort, wenn Sie Nennen Sie einfach eine "magische" existierende Funktion (obwohl das die empfohlene Methode ist), aber er möchte sehen, ob Sie das selbst implementieren können.
Früher sagte mein Lehrer etwas wie "Ich möchte sehen, ob du selbst programmieren kannst, nicht wenn du es im System findest." Nun, wie falsch er war;) ..
Wie auch immer, wenn Ihr Lehrer das gleiche ist, hier ist die harte Weise es zu tun ..
std::string LongToString(long value)
{
std::string output;
std::string sign;
if(value < 0)
{
sign + "-";
value = -value;
}
while(output.empty() || (value > 0))
{
output.push_front(value % 10 + '0')
value /= 10;
}
return sign + output;
}
Man könnte argumentieren, dass std::string
mit nicht "auf die harte Tour", aber ich denke, was zählt in der eigentlichen Agorithmie.
Diesmal ist es in Ordnung, fertige Funktionen zu verwenden. Aber danke für diese nette Idee. –
Wirklich? Er überprüft nur, ob Sie irgendwo eine Funktion finden können? Ja, die Zeiten haben sich geändert;) .. – beef2k
@ beef2k Noch besser - er merkt, dass ich OOP kenne, fühle mich beeindruckt und überprüfe nichts anderes. :) –
boost::lexical_cast<std::string>(my_long)
hier mehr http://www.boost.org/doc/libs/1_39_0/libs/conversion/lexical_cast.htm
+1, obwohl ursprünglich lexical_cast wenig mehr als das akzeptierte stringstream-Beispiel (nur ausdrücklicher verpackt). – philsquared
Eines der Dinge, von niemandem bedeckt, so weit, fallen Sie das Problem weiter zu denken, ist, welches Format sollte ein lange nehmen, wenn es in einen String umgewandelt wird.
Schauen Sie sich einfach ein Spreadsheet-Programm (wie Calc/Excel) an. Willst du es auf die nächste Million gerundet, mit Klammern, wenn es negativ ist, immer um das Zeichen zu zeigen .... Ist die Zahl wirklich eine Darstellung von etwas anderem, sollten Sie es stattdessen in Oractal oder Hex zeigen?
Die Antworten haben Ihnen bisher einige Standardausgaben gegeben, aber vielleicht nicht die richtigen.
Wenn ich das brauchte, würde ich meine Frage bearbeiten. :) –
Liebe es, ich gebe eine überlegte Antwort auf die Frage, um mit dem Nachdenken über die Hausaufgaben zu helfen, anstatt die Antwort zu geben, die bereits da war, und ich bekomme einen Downvote, während 'std :: stringstream' eine Verbesserung hat ... –
In C++ 11 gibt es tatsächlich std :: to_string und std :: to_wstring Funktionen in <Zeichenfolge>.
string to_string(int val);
string to_string(long val);
string to_string(long long val);
string to_string(unsigned val);
string to_string(unsigned long val);
string to_string(unsigned long long val);
string to_string(float val);
string to_string(double val);
string to_string (long double val);
Sie können std::to_string in C++ verwenden 11
long val = 12345;
std::string my_val = std::to_string(val);
- 1. Wie konvertiere ich eine Zeichenfolge in C# in Byte?
- 2. Wie konvertiere ich eine Zeichenfolge in eine Liste in Io?
- 3. Wie konvertiere ich eine Zeichenfolge in eine Ganzzahl in JSonne?
- 4. Wie konvertiere ich eine Zeichenfolge wie "Red" in eine System.Windows.Media.Color?
- 5. Coffeescript: Wie konvertiere ich eine Zeichenfolge in eine Zahl?
- 6. Wie konvertiere ich eine UIColor in eine hexadezimale Zeichenfolge?
- 7. Wie konvertiere ich eine Base64-Zeichenfolge?
- 8. Wie konvertiere ich ein einzelnes Zeichen in eine Zeichenfolge?
- 9. Wie konvertiere ich eine Zeichenfolge in UTF-8 in Android?
- 10. Wie konvertiere ich eine Zeichenfolge in Titel Fall in Android?
- 11. Wie konvertiere ich eine Zeichenfolge in eine Ganzzahl in Ziel C?
- 12. Wie konvertiere ich eine Datetime mit Millisekunden in eine Zeichenfolge in C#?
- 13. Wie konvertiere ich eine JTextField-Zeichenfolge in ein Double?
- 14. Konvertiere eine Zeichenfolge in ein Datum in C++
- 15. Wie konvertiere ich einen Funktionsnamen in eine Zeichenfolge
- 16. Wie konvertiere ich eine UCS2-Zeichenfolge in UTF8?
- 17. Wie konvertiere ich eine Zeichenfolge in ein Array von Arrays?
- 18. Wie konvertiere ich eine Zeichenfolge in einen Array-Namen (PHP)?
- 19. Wie konvertiere ich eine 12 Stunden Zeit Zeichenfolge in eine C# TimeSpan?
- 20. C (gcc auf Linux): Wie konvertiere ich eine Hex-Zeichenfolge "0xfffffff" in eine ganze Zahl?
- 21. Konvertiere ein Objekt in eine XML-Zeichenfolge
- 22. Konvertiere eine Zeichenfolge in einen Schlüssel
- 23. Wie konvertiere ich Benutzereingaben in eine Liste?
- 24. Wie kann ich eine lange Zeichenfolge in Perl angeben?
- 25. Wie konvertiere ich eine Zeichenkette in eine Zeichenkette wchar_t?
- 26. Splitting eine lange Zeichenfolge in kleinere Strings
- 27. Wie lange Zeichenfolge
- 28. Wie konvertiere ich NaN in eine 0?
- 29. Konvertiere eine Zahl in eine Zeichenkette
- 30. in Python Wie konvertiere ich eine einzelne Zahl in eine zweistellige Zeichenfolge?
nur ein bisschen pingelig ... Ich würde nicht nennen das "Casting". – kbyrd
@krbyrd können Sie mir sagen, warum? Ich bin selbst ein .NETist, C++ fühlt sich immer noch unbequem für mich an. :) –
Zustimmen, das ist eine Umwandlung und keine Besetzung. – ralphtheninja