c ++ long long int是不够的?错误

时间:2011-08-02 10:38:50

标签: c++ int long-integer

我在c ++工作。我有一个包含以下数字的字符串

std::string s= "8133522648";

我想在

中转换此数字
long long int nr;

我做了:nr=atoll(s.c_str()). result is: -456410944。如何解决这个错误?感谢

编辑:

事实上我有:

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

感谢您的帮助!欣赏!

3 个答案:

答案 0 :(得分:4)

使用int64_t而不是long long。这是在stdint.h中定义的

如果您依赖提升,可以使用

std::string s= "8133522648";
int64_t nr = boost::lexical_cast<int64_t, std::string>(s);

答案 1 :(得分:3)

可以通过以下更好的方式完成:

#include <sstream>

stringstream sstr;
sstr << "8133522648";

long long nr;
sstr >> nr;

不要使用atoll(),因为它不是由C ++标准定义的。有些编译器可能会实现它,而有些则不能。此外,

std::string s = 8133522648;

并不意味着

std::string s = "8133522648";

这可能是你想要的。

答案 2 :(得分:0)

下面的代码工作正常:

    #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;
    }