У меня есть текстовый файл, который содержит следующие данные.
Первая строка такова:
5 4 3 2 1
Вторая строка такова:
1 2 3 4 5
Я пытаюсь читать данные по одной строке за раз, потому что мой первый объект связанного списка будет использовать данные из первой строки, а мой второй объект связанного списка собираетсяиспользовать данные из второй строки.Лучшее, что я смог придумать, это следующая функция:
void polynomial::allocate_poly(std::ifstream& in, const char* file, const char* number)
{
in.open(file);
std::string str;
char b;
int m = 0;
for(int i = 0; !in.eof(); ++i)
{
in >> b;
m = b - '0';
a.insert(m);
}
С этим подходом связано несколько проблем.Я пробовал разные двоичные операторы в цикле for, такие как b == '\n'
, и ни один из них, похоже, не сработал, когда b - символ новой строки.
Также выделение номеров из файла таким образом, что это выглядит как 5 5 4 3 2 1 1 2 3 4 5
, поэтому кажется, что где-то копируется лишняя 5, я не уверен, является ли это битом eof.
Я также пытался использовать функцию getline, но по какой-то причине кажется, что она копирует только первое целое число, а затем выгружает оставшуюся часть файла.Я точно знаю, что не правильно его использую, но все примеры, которые я могу найти, предназначены для ввода имени файла, такого как cin.getline
, и я хочу иметь возможность передавать свое имя файла в качестве аргумента командной строки при запуске программы.
У меня вопрос: как я могу выделить числа в первой строке до символа новой строки, а затем передать переменную ifstream in
другому объекту для выделения второй строки?Спасибо за вашу помощь.