Файл умеет открываться, но ничего не возвращается?

У меня проблема при попытке получить строки из файла.txt. Я использовал аналогичный алгоритм в другом фрагменте кода и документа без каких-либо проблем (= все строки были напечатаны). Однако, когда я пытаюсь сделать то же самое, используя getline (как обычно), я получаю строку string = "". Мои строки не пусты, и у меня есть предварительный тест, чтобы проверить, открывается ли файл, что он и делает. Ниже приведена функция из моей программы. Может ли кто-нибудь помочь? Спасибо!

Я пытаюсь запустить дело "А"

  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;
    }
  }

Вот несколько строк из моего текстового файла.

  • Код: abd50896
  • Имена: TomMullen NicoleLaBerge
  • Компт: Rutgers DanceSport 2012
  • Уровень: новичок
  • Танец: танго вальс, квикстеп, румба ча, джайв

2 ответа

Решение

Предложите вызов использовать myfile в качестве первого аргумента вместо cin - getline(myfile, line) - потому что cin представляет стандартный ввод, который не является файлом, который вы открыли.

Наиболее очевидным является то, что вы открываете файл, но читаете из cin. Попробуйте изменить cin на myfile.

Другие вопросы по тегам