【发布时间】:2011-11-16 17:25:04
【问题描述】:
我在使用 cin.peek() 和 cin.get() 函数时遇到问题。一般来说,输入总是让我望而却步。基本上,我试图能够使用 >> 的重载获取一串数字(它可能比 int 长,这就是它使用字符的原因)插入到 MyInt 对象中。我编写的 MyInt 类中有一个名为 myNumber 的动态 char 数组。 resize 函数就是这样做的,将动态数组的大小调整为新的大小。
我需要做两件事
- 忽略前导空格
- 在下一个不是 0-9 的字符处停止。 (空格、字母)
这是我所拥有的:
istream& operator>> (istream& s, MyInt& n)
// Overload for the input operator
{
char c; // For peeking
int x;
MyInt input; // For storing
unsigned int counter = 0; // counts # of stored digits
while (isspace(s.peek()))
{
c = s.get();
}
while (C2I(s.peek()) != -1)
{
x = C2I(s.get());
input.myNumber[counter] = I2C(x);
counter++;
input.Resize(counter);
}
cout << "WHAH WHAH WEE WAH\n";
n = input;
}
Main 正在调用这个:
cout << "Enter first number: ";
cin >> x;
cout << "Enter second number: ";
cin >> y;
cout << "You entered:\n";
cout << " x = " << x << '\n';
cout << " y = " << y << '\n';
这是我得到的输出:
Enter first number: 14445678954333
WHAH WHAH WEE WAH
Enter second number: 1123567888999H
WHAH WHAH WEE WAH
You entered:
x = 111111111111113
y = 11111111111119
我是一名学生,这是“家庭作业”。因此,与所有家庭作业一样,我得到了我无法访问的不合逻辑的东西。这个是字符串类。这只是工作的一小部分,但它就像我身边的一根刺。
【问题讨论】: