我有一个大数字存储在一个字符串中,并尝试提取一个数字。但是这些电话之间有什么区别?
#include <iostream>
#include <string>
int main(){
std::string bigNumber = "93485720394857230";
char tmp = bigNumber.at(5);
int digit = atoi(&tmp);
int digit2 = atoi(&bigNumber.at(5))
int digit3 = atoi(&bigNumber.at(12));
std::cout << "digit: " << digit << std::endl;
std::cout << "digit2: " << digit2 << std::endl;
std::cout << "digit3: " << digit3 << std::endl;
}
这将产生以下输出。
位数:7
数字2:2147483647
数字3:57230
第一个是期望的结果。第二个在我看来是一个随机数,我在字符串中找不到它。第三个是字符串的结尾,但不像我预期的那样只是一个数字,而是从第 12 个索引到字符串的结尾。有人可以向我解释不同的输出吗?
编辑:这是一个可以接受的解决方案吗?
char tmp[2] = {bigNumber.at(5), '\0'};
int digit = atoi(tmp);
std::cout << "digit: " << digit << std::endl;