【发布时间】:2015-01-11 06:02:02
【问题描述】:
我需要将一个很长的 Int 读入我现在正在制作的 Long Int 类中,并且我正在重载 cin >> 运算符。用户必须一次输入整个号码。例如:444444444444444444444444444
我计划使用cin.get() 并将结果转换为int,这样我就可以从流中获取第一个4,但它不起作用。有人可以帮我提供任何提示/建议吗?
istream& operator>>(istream &input, LongInt &longint)
{
int check; ////
int first;
first = (int)(cin.get());
longint.stack_li.push(first);
cout << first;
//while (isdigit((int)(input.peek())))
//{
// longint.stack_li.push((int)(check = input.get()));
// cout << check;
//}
return input;
}
(stack_li 只是我包含的头文件(不是 STL)中的 stack,我将 stack 设为 LongInt 所属的类的私有变量。)当我输入数字 5796作为long int,当我的程序运行时,输出是 55 或 57 或一些随机的 2 位数字,这显然是错误的。请告诉我!!
非常感谢!!
【问题讨论】:
-
使用
cin.get(),只会得到一个字符,它被视为char。为什么不将输入作为字符串获取,然后根据自己的喜好解析字符串? -
好吧,我从来没想过。所以你是说使用 get line 并将其存储在一个字符串中?还是类似的正确?
-
是的,尽管取决于数字的大小,您可以使用
long long类型,它是 64 位与 32 位相比,int,还有其他类型用于更大的整数,采取看看这个 StackOverflow 问题。 Types bigger than long long in C++ 我相信 C++11 支持long long类型作为 cin 提取运算符的参数。 -
这对我不起作用。有谁知道如何解决这一问题?字符串线;获取线(cin,线); cout
-
Dude lrn2 接受答案。 seriously.
标签: c++ overloading operator-keyword cin