Come si converte uno long
in uno string
in C++?Come posso convertire una stringa lunga in una stringa in C++?
risposta
È possibile utilizzare stringstream.
#include <sstream>
// ...
std::string number;
std::stringstream strstream;
strstream << 1L;
strstream >> number;
Di solito ci sono alcune funzioni C proprietarie nella libreria standard per il compilatore che lo fa anche. Preferisco le varianti più "portatili" però.
Il modo C di farlo sarebbe con sprintf, ma non è molto sicuro. In alcune librerie ci sono nuove versioni come sprintf_s che protegge dai sovraccarichi del buffer.
Check out 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
È std :: string, non std :: String. – avakar
Grazie - problemi con le dita. –
Il modo in cui lo faccio in genere è con sprintf. Così per molto che si possa fare quanto segue partendo dal presupposto che siete su un'architettura a 32 bit:
char buf[5] = {0}; // one extra byte for null
sprintf(buf, "%l", var_for_long);
-1. Mentre un compilatore C++ compilerà il tuo codice, non dovrebbe certamente essere chiamato C++. Inoltre, dubito che 5 caratteri siano sufficienti. – avakar
Per favore non difendere sprintf in questo giorno ed età. Non abbiamo abbastanza exploit di sovraccarico del buffer? Non che questo codice sembri averlo come scritto - ma non sai mai come cambiano le cose. – philsquared
Phil, il buffer traboccherà per qualsiasi numero superiore a 10000. – avakar
int main()
{
long mylong = 123456789;
string mystring;
stringstream mystream;
mystream << mylong;
mystring = mystream.str();
cout << mystring << "\n";
return 0;
}
Ci sono diversi modi. Leggi The String Formatters of Manor Farm per un confronto approfondito.
Questo è un buon articolo. – Skurmedel
Sì. Questa è almeno la terza volta che l'ho collegata su SO. 8v) –
Non so che tipo di compiti a casa questo è, ma molto probabilmente l'insegnante non voglio una risposta in cui si basta chiamare una funzione "magica" esistente (anche se questo è il modo consigliato di farlo), ma vuole vedere se è possibile implementarlo da solo.
In passato, il mio insegnante diceva qualcosa del tipo "Voglio vedere se riesci a programmare da solo, non se lo trovi nel sistema." Ebbene, come si sbagliava;) ..
In ogni caso, se il tuo insegnante è lo stesso, qui è nel modo più duro per farlo ..
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;
}
Si potrebbe sostenere che l'utilizzo non è std::string
"nel modo più duro", ma immagino quello che conta nell'attuale agorithm.
Questa volta va bene usare le funzioni pronte. Ma grazie per questa bella idea. –
Davvero? Sta solo controllando se riesci a trovare una funzione da qualche parte? Sì, i tempi sono cambiati;) .. – beef2k
@ beef2k Ancora meglio - si accorge che conosco OOP, si sente colpito e non controlla nient'altro. :) –
boost::lexical_cast<std::string>(my_long)
più qui http://www.boost.org/doc/libs/1_39_0/libs/conversion/lexical_cast.htm
+1, sebbene originariamente, lexical_cast ha fatto poco più che l'esempio di stringhe di stringhe accettate (appena racchiuso in modo più espressivo). – philsquared
Una delle cose non coperti da nessuno fino ad ora, per aiutarvi a pensare al problema ulteriormente, è quello formato deve prendere una lunga quando si è gettato in una stringa.
Basta dare un'occhiata a un programma spreedsheet (come Calc/Excel). Lo vuoi arrotondato al milione più vicino, con parentesi se è negativo, sempre per mostrare il segno .... Il numero è davvero una rappresentazione di qualcos'altro, dovresti invece mostrarlo in Oractal o Hex?
Le risposte finora hanno fornito un output predefinito, ma forse non quello giusto.
Se ne avessi avuto bisogno, avrei modificato la mia domanda. :) –
Mi piace, do una risposta ponderata alla domanda per aiutare a pensare ai compiti piuttosto che dare la risposta che era già lì e ottengo un downvote, nel frattempo "std :: stringstream" ha un upvote ... –
In C++ 11, esistono in realtà le funzioni std :: to_string e std :: to_wstring nella stringa < >.
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);
È possibile utilizzare std::to_string in C++ 11
long val = 12345;
std::string my_val = std::to_string(val);
- 1. come convertire una stringa c in una stringa d?
- 2. Come convertire questa stringa esadecimale in una lunga?
- 3. Come posso convertire una stringa in jsx?
- 4. Come dichiarare una lunga stringa in Python?
- 5. Come posso convertire un percorso Unicode in una stringa c?
- 6. Come posso citare una lunga stringa in Perl?
- 7. convertire una stringa in una variante in C++
- 8. Convertire Char in una stringa
- 9. Come posso rilevare "_" in una stringa C++?
- 10. Come posso tagliare una stringa in C?
- 11. Come convertire formula stringa in una formula matematica in C#
- 12. Definizione di una stringa lunga in Rasoio
- 13. Come convertire un GUID in una stringa in C#?
- 14. Come posso convertire un singolo carattere in una stringa?
- 15. Come posso convertire una stringa in un int in Python?
- 16. Come posso convertire una stringa in float in mysql?
- 17. Come posso convertire una stringa in title case in Android?
- 18. Come convertire StreamReader in una stringa?
- 19. Come posso convertire una stringa in una stringa codificata in UTF-8 e viceversa?
- 20. Come convertire una stringa in UTF8?
- 21. Come convertire una stringa pinyin in cinese in C#
- 22. Come convertire una stringa in RTF in C#?
- 23. Come convertire un int in una stringa?
- 24. Come convertire un HTMLElement in una stringa
- 25. Come posso convertire una stringa come "Red" in System.Windows.Media.Color?
- 26. Convertire una stringa in int in Rust?
- 27. Ruby: Come convertire una stringa in booleana
- 28. Come convertire Bitmap in una stringa Base64?
- 29. come convertire una stringa in un bool
- 30. Come convertire WebResponse.GetResponseStream in una stringa?
Solo un po 'di fare i difficili ... non vorrei chiamare questo "casting". – kbyrd
@krbyrd potresti dirmi perché? Sono io stesso un .NET. C++ si sente ancora a disagio per me. :) –
D'accordo, questa è una conversione e non un cast. – ralphtheninja