c ++ long long int не достаточно ??ошибки - PullRequest
0 голосов
/ 02 августа 2011

Я работаю в C ++. У меня есть строка, которая содержит следующее число

std::string s= "8133522648";

Я хочу преобразовать это число в

long long int nr;

Я сделал: nr=atoll(s.c_str()). result is: -456410944. Как решить эту ошибку? Спасибо

Edit:

На самом деле у меня есть:

const char* str="8133523648";
I have to convert it into long long int nr=8133523648

Спасибо за помощь! Цените!

Ответы [ 3 ]

4 голосов
/ 02 августа 2011

используйте int64_t вместо long long. который определен в stdint.h

Если вы полагаетесь на повышение, вы можете использовать

std::string s= "8133522648";
int64_t nr = boost::lexical_cast<int64_t, std::string>(s);
3 голосов
/ 02 августа 2011

Лучше сделать это следующим образом:

#include <sstream>

stringstream sstr;
sstr << "8133522648";

long long nr;
sstr >> nr;

Не используйте atoll(), так как он не определен стандартом C ++. Некоторые компиляторы могут реализовать это, а другие нет. Кроме того,

std::string s = 8133522648;

не значит

std::string s = "8133522648";

что, вероятно, было тем, что вы хотели.

0 голосов
/ 02 августа 2011

Код ниже работает нормально:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>

    using namespace std;

    int main() {

       std::string s= "8133522648";
       long long int nr = atoll(s.c_str());
       cout << nr;
    }
...