2012-04-09 29 views
-1
LongInt i1; 

cin >> i1; 

其中LongInt是一个包含整数堆栈的类。我想将输入存储到类中的堆栈中,我假设这意味着我必须在我的类文件中重载>>操作符。问题是,我不知道如何将cin >>“111343241”这样的输入按位数推入堆栈中。我将如何完成这项工作?overloading >>堆栈列表类的操作符

+0

请分享您的方法。 – 2012-04-09 19:36:50

+0

等一下,什么'cin >>“111343241”'是什么意思?你不能接受输入,然后把它放入一个字符串中。你的意思是'output << i1;'? – 2012-04-09 19:37:17

+0

我的意思是cin >> 193241924924,只是一些不能存储在普通int中的数字。我有一个LongInt类,其中有一个名为s1的数据字段,但我甚至不知道从哪里开始分解cin,以便按位数给出数字 – 2012-04-09 19:39:24

回答

3

重载运营商本身,实现了get环,定义了一个命名空间范围

std::istream& operator >>(std::istream& is, LongInt& li) { 
    char c; 
    while(is.get(c).good()) { 
     if(!std::isdigit(c)) { 
      is.unget(); 
      break; 
     } 

     ...push it to li 
    } 

    return is; 
} 

你怎么推个位数的LONGINT取决于具体的实现LONGINT的。

+1

你的循环条件应该是'while(is.get(c))'。 – 2012-04-09 19:44:12

+0

正确 - 而且isgood()无论如何都是错误的名字。 ;-) – modelnine 2012-04-09 19:45:40