c ++初学者和第一次海报。
我正在读一个由分号分隔的一系列大数字组成的文件。
我正在尝试创建一个循环,其中文件被读入两个对象(第一个数字,第一个数字中的分号,第二个数字中的第二个数字),然后打印包含每个数字的两个对象。打印前两个后,应重复下两个数字,直到文件结束。
我一直在玩它很多,无法让它工作。两个问题不断出现:
无限循环
无法将数字读入对象
我目前有运营商>>重载如下:
std::istream& operator>>(std::istream& fin, big& obj){
char temp[size];
char stop = ';';
fin.get(temp, size, stop);
//constructor converts temp to big
obj = big(temp);
return in;
}
我正确地打开文件,当我在一个对象上使用它时(在>> big1中)它正常工作并读取第一个数字。
但是如果我尝试读入两个对象(在>>> big1>> big2),那么只有第一个得到一个数字而第二个得不到任何东西(big1 == 1234 big2 == 0)。
如果我尝试在最终目标的循环中执行此操作,那么我只是得到一个零无限循环。这是我现在正在尝试做的基本代码:
//file opens correctly
big big1, big2;
while (!fin.eof()){
//read two numbers from file seperated by semicolon
fin >> big1 >> big2;
std::cout << big1 << "\n";
std::cout << big2 << "\n";
//repeat until end of file reached
}
fin.close();
return 0;
我怎么写这个可以工作?我一直在尝试多种方式来编写它,没有任何作用,但它必须是可能的。
如果可以,请帮助我!
另请注意,我不能使用预定义的类,如std :: vector或std :: string