2008-11-19 24 views
9

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 :)

+0

Es scheint, diese Frage jede Woche erscheint oder so: - | –

Antwort

5

Versuchen _atoi64. Dies geschieht char* und gibt __int64.

+1

Käufer aufgepasst: atoi ist nicht typsicher und bietet auch keine Überprüfung von Grenzen! – Alan

+0

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. –

+0

boost :: lexical_Cast <> –

15

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.

C++ FAQ

+0

Sie sollten 'std :: int64_t' anstelle der Spracherweiterung MSVC' __int64' verwenden. –

+0

Ich glaube nicht, std :: int64_t ist auf VC++ 2008 verfügbar – Alan

+0

Ah, du hast Recht. Mein Fehler. –

7

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) 
1

Eine andere Option ist die Verwendung von stoll() innerhalb der String-Bibliothek. Nimmt eine C++ - Zeichenfolge.

long long ll = std::stoll(mystr); 

Docs

Verwandte Themen