标题:2个问题,一个是stl的~?
只看楼主
猫妓
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2005-2-11
 问题点数:0 回复次数:3 
2个问题,一个是stl的~?
1、还是我上次那个程序~cin.get(); c=cin.peek(); 换成 cin.get(c)或c=getchar(); 程序就得错误结果~ 那个贴子上有源码~ 2、STL中用iterator 为什么用双冒号?这里不是定义成员函数呀~ list<string>::iterator pos;
搜索更多相关主题的帖子: stl 
2005-02-20 14:34
kai
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:52
帖 子:3450
专家分:59
注 册:2004-4-25
得分:0 
关于第一个问题:
如果从局部来看,将cin.peek() 改为 cin.get(c) 或 c = getchar() 是可以的。这句话的意思是,如果程序中只出现peek 或者只出现 get, 那么使用哪个都一样。

如果在程序中混合出现,必须注意peek() 的特性,peek 在英文中是匆匆一瞥的意思,顾名思义,他将不改变输入流的内容,也就是说,在使用完peek 函数后,它返回输入流的当前 character, 但并不从输入流中抽出那个 character,这样在下一次使用其他得到字符函数时,比如 cin.get() 或 getchar() 时,还将返回那个当前 character. 如果要避免这个问题的产生,我们可以在 使用peek() 函数后,再加一个 cin.get();

#include &lt;iostream&gt;
#include &lt;cstdlib&gt;

void using_peek()
{
    char c = std::cin.peek();
    std::cout&lt;&lt;c&lt;&lt;std::endl;
//   std::cin.get();               // 请注意体会这里,将这一行隐去和不隐去,效果是不一样的。
}

void using_get1()
{
    char c = std::cin.get();
    std::cout&lt;&lt;c&lt;&lt;std::endl;
}

void using_get2()
{
    char c;
    std::cin.get(c);
    std::cout&lt;&lt;c&lt;&lt;std::endl;
//    std::cin.clear();
}

void using_getchar()
{
    char c = getchar();
    std::cout&lt;&lt;c&lt;&lt;std::endl;
}
int main()
{
    using_peek();
    using_peek();
    using_peek();
    using_get1();
    using_get2();
    using_getchar();
    system("pause");
    return 0;
}

//  我今天还有事,你的第二个问题,我晚上回来再来回答你。

自由,民主,平等,博爱,进步.
中华民国,我的祖国,中华民国万岁!中华民国加油!
本人自愿加入中国国民党,为人的自由性,独立性和平等性而奋斗!
2005-02-20 17:46
live41
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:67
帖 子:12442
专家分:0
注 册:2004-7-22
得分:0 
不一定是定义才可以用“::”的。静态成员的使用就是用“::”,不过我也不知道iterator为什么要用“::”,我知道iterator是STL的指针。
2005-02-20 17:57
猫妓
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2005-2-11
得分:0 
问题2:简单说来就是~嵌套类~

2005-02-21 10:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-12355-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.429991 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved