Puis-je savoir comment je peux convertir std :: string en MSVC spécifique __int64?Convertir std :: string en MSVC spécifique __int64
Répondre
_atoi64, _atoi64_l, _wtoi64, _wtoi64_l
std::string str = "1234";
__int64 v =_atoi64(str.c_str());
Voir aussi ce lien (bien qu'il soit pour linux/unix): Why doesn't C++ reimplement C standard functions with C++ elements/style?
est ici une façon:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main() {
string s("1234567890987654321");
stringstream strm(s);
__int64 x;
strm >> x;
cout << x;
}
__int64
, tandis qu'une extension, est encore juste un type numérique. Utilisez la méthode que vous utiliseriez généralement.
Boost lexical cast est mon préféré. Il enveloppe assez bien Michaels réponse sous une forme facile à utiliser:
__int64 x = boost::lexical_cast<__int64>("3473472936");
Si vous ne pouvez pas utiliser boost, vous pouvez toujours faire un très bon travail de faire une version simple. Voici une implémentation que j'ai écrite pour une autre réponse:
template <typename R>
const R lexical_cast(const std::string& s)
{
std::stringstream ss(s);
R result;
if ((ss >> result).fail() || !(ss >> std::ws).eof())
{
throw std::bad_cast();
}
return result;
}
Il fait quelques extras, comme la vérification des caractères de fin. ("123125asd"
échouerait). Si la distribution ne peut pas être effectuée, bad_cast
est lancée. (Similaire à augmenter.)
En outre, si vous avez accès à stimuler, vous pouvez éviter la nécessité d'utiliser l'extension MSVC spécifique __int64
avec:
#include <boost/cstdint.hpp>
typedef boost::int64_t int64;
Pour obtenir int64
sur une plate-forme qui lui fournit , sans changer votre code.
- 1. Convertir std :: string en QString
- 2. convertir std :: string en basic_ostream?
- 3. erreur C2440: '=': impossible de convertir 'std :: string []' en 'std :: string []'
- 4. Comment convertir wchar_t * en std :: string? .?
- 5. Comment convertir std :: string en NSString?
- 6. C++ .NET convertir System :: String en std :: string
- 7. En utilisant __int64 et std :: ostringstream dans VC6
- 8. en utilisant std :: find_if avec std :: string
- 9. convertir std :: string en LPCSTR avec '0' final ou '0'
- 10. Convertir C++ Builder AnsiString en std :: string via boost :: lexical_cast
- 11. Comment convertir std :: string à LPCWSTR en C++ (Unicode)
- 12. Pourquoi std :: string :: max_size() == std :: string :: allocator :: max_size()
- 13. opérateur bool() converti en std :: string et en conflit avec l'opérateur std :: string()
- 14. Convertir System.Array en string []
- 15. std :: string un conteneur
- 16. opérateur std :: string() const?
- 17. std :: string x (x);
- 18. booste tampon en char * (pas std :: string)
- 19. Comment INSÉRER binaire std :: string en BLOB
- 20. FILETIME to __int64
- 21. std :: trier sur std :: vector <std::string>
- 22. Convertir std :: vector en tableau
- 23. Convertir CString en std :: wstring
- 24. std :: string :: remplace l'implémentation standard?
- 25. Comment faire pour convertir unsigned char * en std :: string en C++?
- 26. Comment convertir un "pointeur en const TCHAR" en un "std :: string"?
- 27. const unsigned char * à std :: string
- 28. Ouvrir un fichier avec std :: string
- 29. initialisation std :: string de char * sans copie
- 30. Comment convertir Guid [] en String?