培养自己的整数类
Сreating your own class of integers
我写了一个函数,可以在替换中找到数字并总结它们256。
__int64_t String_solver(string str){
__int64_t i_a = 0;
for(int i = 0 ; i < str.size(); i++){
int j = 0;
if(isdigit(str[i])){
j=i;
while(isdigit(str[i])){
i++;
}
const char * c = str.substr (j,i-j).c_str();
i_a+= strtoll(c, nullptr,10);
}
else if((str[i]=='-')&&(isdigit(str[i+1]))){
j=i;
i++;
while(isdigit(str[i])){
i++;
}
const char * c = str.substr (j,i-j).c_str();
i_a+= strtoll(c, nullptr,10);
}
}
return i_a;
}
int main() {
__int64_t arg=0;
string string1;
std::ifstream in("text.txt");
if (in.is_open())
{
while (getline(in, string1))
{
arg+=String_solver(string1);
}
}
in.close();
if(arg<0){
cout << (arg % 256 + 256) % 256;
}
else{
cout << arg%256;}
return 0;
}
但是该程序与以下文件无法正常工作text.txt
12123
123123
123124234345
23423453465467345234
234234234234234
234234234234
-234234234234
-2134234234234287492847923847
我不明白为什么_int_64_t不是合适的类型。
我不明白为什么_int_64_t不是合适的类型。
如果您查看可以存储在_int64_t中的最大价值是什么: 2^64 = 18446744073709551616
必须除以2,以便获得负值18446744073709551616/2 = 9223372036854775808
。这意味着您可以获得的最大值是9223372036854775808
,最小值为-9223372036854775808
,但是您的最低值是-2134234234234287492847923847
。这就是为什么_int64_t不合适的原因。
也就是说,由于我们真的不知道您的输出怎么了
如评论和第一个答案所述,您的类型不够长。
您仅对最终模拟256值感兴趣。因此,您可以一一读取数字并递归计算Modulo 256值,例如x = (10*x + newdigit) %256;
只要注意x
的第一次感情的标志即可。
相关文章:
- 没有为自己的结构调用列表推回方法
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 如何知道整数中的位数
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- 对已具有设定值的整数变量的加法
- 有没有一种优雅而快速的方法来测试整数中的 1 位是否位于连续区域
- C++从对象自己的类中删除对象
- 使用 std::optional,而不是自己的结构
- 必须首先打印向量 v1 中最接近整数 x 的数字<int>
- 子轴围绕父轴而不是他自己的轴旋转
- 什么是自动 t1=std::make_tuple(case1==case2,整数)的值
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- C++ 如何为自己的迭代器类从迭代器转换为const_iterator?
- 重载 + 自己的类和 std::string 的运算符
- 使用多集输入的整数出现的次数
- 类无法访问自己的私有静态 constexpr 方法 - Clang bug?
- 是否可以在不填充自己的参数的情况下将模板函数作为参数传递?
- 如何将自己的链表实现从存储整数更改为存储个人数据
- 培养自己的整数类
- 为什么我的MinHeap对整数排序正确,但我自己的类却不正确