标题:很诡异的现象----const引用问题
取消只看楼主
yijing21
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-11-7
 问题点数:0 回复次数:1 
很诡异的现象----const引用问题
void Information::save_file()
{
    ofstream out;
    out.open("stu.txt",ios::out | ios::app);
    student stu;
    while(cin)
    {
        cout<<"\n请输入8位学号:";
        cin>>stu.num;
    
        if(!cin)
            break;
        string str=repeat(stu.num);
        vc.push_back(str);
        out<<str<<"\t";
                  ............
                  ............
}

string Information::repeat(const string &str)
{
    ifstream in;
    in.open("stu.txt",ios::in);
    while(in)
    {
        student stu;
        in>>stu.num>>stu.name>>stu.score[0]>>stu.score[1]>>stu.score[2];
        vc.push_back(stu.num);
    }
    

    string m_str=str;
    
    for(vector<string>::size_type i=0;i!=vc.size()-1;++i)
        {
            if([bo]m_str[/bo]==vc[i])
            {
                i=vc.size()-1;
                cout<<"\n重复输入:";
                cout<<"\n请输入8位学号:";
                cin>>m_str;
                repeat(m_str);
            }
        }
    
    return m_str;
}

问题在repeat函数。
这是一个判别是否重复输入的问题  注意for语句里的==判断的句子  用m_str的话  程序可正常运行遇到重复输入的字符创可以提示  再次输入不重复的就接收  但是如果[bo]m_str[/bo]用[bo]str[/bo]也就是传进来的常量的话程序运行时如果先遇到重复的字符串会提示,再输入不重复的字符串 它也提示重复  想了好久不知道这里用const引用去比较为什么会出现这种现象?
搜索更多相关主题的帖子: stu const str ios 
2008-04-19 11:36
yijing21
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-11-7
得分:0 
楼上是指改成if(vc[i]==str)这样问题是一样的  也是不行  高内聚低耦合什么意思啊  ?
2008-04-19 12:54



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




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

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