1

map姓を入力し、続いて家族の名を入力したいところがあります。最初の名前を入力した後、ファイルの終わりに到達してから、プロセスを繰り返したいと思います。

以下は私のコードです。ファイルの終わりを入力してクリアし、外側のループに移動しようとしています。ただし、ファイルの終わりを入力すると、両方のループが終了します。これを防ぐにはどうすればよいですか?

また、別の方法でプログラムを作成できることも知っていますが、現在のコードを修正する方法を知りたいです。

#include <iostream>
#include <map>
#include <vector>
int main()
{
    std::string last, children;
    std::map<std::string, std::vector<std::string>> family;
    while(std::cin >> last) {
        while(std::cin >> children) {
            family[last].push_back(children);
        }
        std::cin.clear(~std::istream::eofbit);
    }
    for(const auto &l:family) {
        std::cout << l.first << std::endl;
        for(const auto &c:l.second)
            std::cout << c << " ";
        std::cout << std::endl;
    }
    return 0;
4

1 に答える 1