Мне нужно прочитать из файла, а затем разбить строку на 3 строки. Формат: A first_ Secod _Third (три символа подчеркивания) Это домашнее задание, и они предлагают нам использовать getline и игнорировать. поэтому у меня есть:Чтение из файла (ifstream) и сортировка
main()
ifstream inf("file.txt")
while(inf)
{inf >> class1;
cout << class1;
}
class THECLASS
{string a, b, c;
public:
friend void operator>>(ifstream &inf, THECLASS &class1)
{getline(inf, class1.a, '_');
inf.ignore();
inf.ignore();
[if I put getline class1.b, the whole line will go into it, overwriting .a]
}
and in operator<<, I have
os << class1.a << class1.b;
return os;
Но все, что я получаю, когда я COUT < < Class1 все три поля ввода файла без _, каждый на новой строке. Когда я попытался использовать функцию get(), компилятор не узнает ее, даже если я объявил fstream. Каков общий алгоритм его выполнения?
На самом деле есть три индекса. В этом случае мне понадобятся два оператора inf.ignore(), не так ли? Тем не менее, для моей последней записи он правильно читает b c, а затем создает другие b и c. Я думаю, что есть проблема с моим классом, хотя .... – user1078719
Извините за непонимание u point, u хотите First_Second_Third в качестве выходного формата? я просто подумал, что это формат inf, можно ли дать мне исходный формат данных? если u хочет формат вывода, в операторе << os << class1.a << "_" << class1.b; – Ticks
Спасибо за работу, клещи! Ваш первый код помог мне решить его. Я вошел в одну дополнительную строку в inf, потому что у меня не было заявления о разводе в правильном месте, но для остальных это отлично работало! – user1078719