-2

ベクトルに格納された文字列を取り、それらを.txtファイルに追加するプログラムを作成しようとしています.txtファイルに保存されている文字列でベクトルを埋め、それらを印刷させます.

しかし、私がそれをやろうとすると、ベクターが満たされていない、ifstreamと>>が文字列をベクターにロードすることで機能しないと言われました。

int main()
{
    vector<string> champ_list;
    vector<string> fri_list;
    string champ_name;
    string list_name;
    string champ_again;
    cout <<"Pleas enter in the name of the list for your Random pick\n"; 
    cin>>list_name;

    do
    {
        cout <<"Please enter in the name of the champion you would like to add to the list\n";
        cin>>champ_name;
        champ_list.push_back(champ_name);
        cout <<"Would you like to add another name to the list y/n\n";
        cin>>champ_again;
    } while(champ_again == "y");
    cout <<"1\n";

    ofstream mid_save("mid.txt");
    mid_save<<champ_list[0]<<"\n";
    cout <<"2\n";

    // This is where the program crashes 
    ifstream mid_print("mid.txt");
    mid_print>>fri_list[0];
    cout<<"3\n";

    cout <<fri_list[0];
    cin>>list_name;

    return 0;
};
4

1 に答える 1

2

「mid.txt」ファイルを再度開いて読む前に、ファイルを閉じたいと思われます。ファイル ストリームの状態を確実にテストして、正常に開くことを確認する必要があります。例えば:

ofstream mid_save("mid.txt");
if (!mid_save) {
    std::cerr << "can't open mid_save\n";
    return 1;
}
mid_save<<champ_list[0]<<"\n";
cout <<"2\n";
mid_save.close(); // Close the file before reopening it for input

ifstream mid_print("mid.txt");
if (!mid_print) {
    std::cerr << "can't open mid_print\n";
    return 1;
}
mid_print>>fri_list[0];
cout<<"3\n";
于 2012-06-25T00:37:52.130 に答える