Файл умеет открываться, но ничего не возвращается?
У меня проблема при попытке получить строки из файла.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.