1

.txt ファイルから行を取得しようとすると問題が発生します。別のコードとドキュメントで同様のアルゴリズムを使用しましたが、一見問題はありませんでした (= すべての行が出力されました)。ただし、getline を使用して同じことを試みると (いつものように)、文字列 line = "" が得られます。私の行は空ではなく、ファイルが開くかどうかを確認するための事前テストがあります。以下は私のプログラムの関数です。誰でも助けてもらえますか?ありがとう!

ケース「A」を実行しようとしています

  void Database::LoginMenu(string code)
  {
    cout << endl;
    cout << "Thank You for Login In, Would You Like To..." << endl;
    cout << "====================================================" << endl;
    cout << "A. View your registration information" << endl;
    cout << "B. Search for others" << endl;
    cout << "C. Search for Upcoming" << endl;
    cout << "D. Enter the Database" << endl;

    char choice, YN;

    cout << endl;
    cout << "Please choose an option: ";
    cin >> choice;

    switch(choice)
    {
    case 'A':
        {
            ifstream myfile("RegistrationInfo.txt");
            string line;
            if(myfile.is_open())
            {   
                while(!myfile.eof())
                {
                    getline(cin, line);

                    if(line[5] == ':')
                    {
                        line = line.substr(7, line.size());
                    }
                    if(line == code)
                    {
                        while(!line.empty())
                        {
                            cout << line << endl;
                        }
                    }
                }
            }   
            cout << "Would you like to return to the menu? (Y/N)";
            cin >> YN;      

            if(YN == 'Y')
            {
                LoginMenu(code);
            }

            myfile.close();
        }
        break;
    case 'B':
        {
            ifstream filein("RegistrationInfo.txt");
            string temp, YN, enteredInfo;
            int n = 0;

            cout << "Who do you wish to search for? :";
            cin >> enteredInfo;

            while(!filein.eof())
            {
                getline(cin, temp);
            }
        }
        break;
    case 'C': upcomingComps();
        break;
    case 'D': DatabaseMenu();
        break;
    }
  }

これが私のtxtファイルからの数行です。

  • C コード: abd50896
  • 名前: TomMullen NicoleLaBerge
  • コンプト: Rutgers DanceSport 2012
  • レベル: 新人
  • ダンス:タンゴワルツ クイックステップ ルンバ チャチャジャイブ
4

2 に答える 2

1

cin -- -- cin の代わりに myfile を最初の引数として使用する呼び出しを提案しgetline(myfile, line)ます。これは、cin が stdin を表しているためです。これは、開いたファイルではありません。

于 2012-05-02T05:41:55.360 に答える
0

最も明白なことは、ファイルを開いているが、cin から読んでいるということです。cin を myfile に変更してみてください。

于 2012-05-02T05:45:47.247 に答える