C++ 我的条件最小搜索失败。我怎样才能解决这个问题?C++;

C++ 我的条件最小搜索失败。我怎样才能解决这个问题?C++;,c++,class,oop,search,enumerator,C++,Class,Oop,Search,Enumerator,我有一个类似如下的input.txt: (按此顺序:垂钓者、比赛、鱼、体重) JACK random3030鱼10鱼12.6 JOHN random3030鱼5.3鱼4.5 托马斯xyz0501鲤鱼2鲤鱼5鲤鱼3鲤鱼6 史密斯xyz0501鲤鱼40鱼3 我想实现的是打印鲤鱼的最小重量。当同一行中有超过1条鲤鱼时,我的代码将失败。因此,输出应为: 托马斯在比赛xyz0501中钓到了一条最小体重为2磅的鲤鱼 我的输出如下所示: 托马斯在比赛xyz0501中捕获了一条最小重量为6的鲤鱼 因此,如果一行

我有一个类似如下的input.txt:
(按此顺序:垂钓者、比赛、鱼、体重)

JACK random3030鱼10鱼12.6
JOHN random3030鱼5.3鱼4.5
托马斯xyz0501鲤鱼2鲤鱼5鲤鱼3鲤鱼6
史密斯xyz0501鲤鱼40鱼3

我想实现的是打印鲤鱼的最小重量。当同一行中有超过1条鲤鱼时,我的代码将失败。因此,输出应为:

托马斯在比赛xyz0501中钓到了一条最小体重为2磅的鲤鱼

我的输出如下所示:

托马斯在比赛xyz0501中捕获了一条最小重量为6的鲤鱼

因此,如果一行中有超过1条鲤鱼,我的输出总是打印最新的,而不是mininum。重要的是要注意,input.txt中可能没有一个carp。另外,如果我将其放在input.txt中:

史密斯xyz0501鲤鱼1鲤鱼40鲤鱼3

与此相反:

史密斯xyz0501鲤鱼40鱼3

我的输出仍然是一样的,但应该是史密斯,因为他抓到了最小重量。
我的代码:

我认为我的主要for循环与我的问题有关(多亏了调试),但可能还有更多我不知道的地方。我最近开始练习更多的课程和东西,所以请尽量保持解决方案的简单。多谢各位

如果一行中有超过1条鲤鱼,我的输出总是打印最新的

我相信这是因为读取文件的代码只存储一行中的最后一个鲤鱼

    for( is >> fish >> _size ; !is.fail(); is >> fish >> _size )
    {
        if(fish == "carp")
            _cur.weight=_size;
    }
如果一行中有两条鲤鱼,则此循环将运行两次。第二次它将用第二次的重量覆盖第一次的重量。这就是为什么你只能看到每条线中最后一条鲤鱼的重量

每一条鲤鱼都应该有自己的记录(1:1)。如果一个渔夫钓到两条鲤鱼。那么渔夫应该有两个记录,每只鲤鱼一个(1:n)

每次文件读取器遇到另一个carp时,它都应该创建并存储一条新记录

如果一行中有超过1条鲤鱼,我的输出总是打印最新的

我相信这是因为读取文件的代码只存储一行中的最后一个鲤鱼

    for( is >> fish >> _size ; !is.fail(); is >> fish >> _size )
    {
        if(fish == "carp")
            _cur.weight=_size;
    }
如果一行中有两条鲤鱼,则此循环将运行两次。第二次它将用第二次的重量覆盖第一次的重量。这就是为什么你只能看到每条线中最后一条鲤鱼的重量

每一条鲤鱼都应该有自己的记录(1:1)。如果一个渔夫钓到两条鲤鱼。那么渔夫应该有两个记录,每只鲤鱼一个(1:n)


每次文件阅读器遇到另一条鲤鱼时,它都应该创建并存储一条新记录。

感谢您的帮助。我不知道你到底是什么意思。你能试着根据你引用的代码给出一个例子吗?我已经添加了一个非常详细的解释。谢谢你的帮助。我不知道你到底是什么意思。你能试着根据你引用的代码给出一个例子吗?我已经添加了一个非常详细的解释。
    for( is >> fish >> _size ; !is.fail(); is >> fish >> _size )
    {
        if(fish == "carp")
            _cur.weight=_size;
    }