我在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
感谢您的帮助!欣赏!
答案 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;
}