Ich benutze VS 2008, um ein C++ - DLL (nicht verwaltet) -Projekt zu erstellen, und ich muss ein char * in einen langen langen Typ konvertieren. Gibt es einen einfachen Weg, es zu tun?konvertieren Zeichenfolge in lang lang
Vielen Dank im Voraus :)
Ich benutze VS 2008, um ein C++ - DLL (nicht verwaltet) -Projekt zu erstellen, und ich muss ein char * in einen langen langen Typ konvertieren. Gibt es einen einfachen Weg, es zu tun?konvertieren Zeichenfolge in lang lang
Vielen Dank im Voraus :)
Versuchen _atoi64.
Dies geschieht char*
und gibt __int64
.
Käufer aufgepasst: atoi ist nicht typsicher und bietet auch keine Überprüfung von Grenzen! – Alan
Ja, _atoi64 ist wahrscheinlich keine gute Wahl. Wenn Sie .NET Framework verwenden, verwenden Sie ToInt64 nicht in einem String, sondern in einem char *. Wenn nicht, denke ich, strtol oder es ist der aktuelle Standard Weg zu gehen und ist sicherer als atoi. –
boost :: lexical_Cast <> –
Der einfachste Weg ist es, die std :: string (es ist auch die typsichere ...) verwenden
std::stringstream sstr(mystr);
__int64 val;
sstr >> val;
Sie können eine 64-Bit-Anwendung für diese arbeiten zielen müssen.
Sie sollten 'std :: int64_t' anstelle der Spracherweiterung MSVC' __int64' verwenden. –
Ich glaube nicht, std :: int64_t ist auf VC++ 2008 verfügbar – Alan
Ah, du hast Recht. Mein Fehler. –
Wenn Sie Boost verwenden, ist lexical_cast die Art und Weise, meiner Meinung nach zu gehen.
long long ll = boost::lexical_cast<long long>(mystr)
Eine andere Option ist die Verwendung von stoll() innerhalb der String-Bibliothek. Nimmt eine C++ - Zeichenfolge.
long long ll = std::stoll(mystr);
Es scheint, diese Frage jede Woche erscheint oder so: - | –