Кажется, что это не проблема, которая вызывает проблемы для меня. Я не понимаю. :/Не могу получить ios :: попросить вернуться к началу файла
Так что я стараюсь, чтобы я понял, как манипулировать текстовыми файлами. У меня есть два файла: «infile.txt» и «outfile.txt». «infile.txt» имеет шесть номеров в нем и ничего больше. Вот код, который я использовал для управления файлами.
#include<fstream>
using std::ifstream;
using std::ofstream;
using std::fstream;
using std::endl;
using std::ios;
int main()
{
ifstream inStream;
ofstream outStream;//create streams
inStream.open("infile.txt", ios::in | ios::out);
outStream.open("outfile.txt");//attach files
int first, second, third;
inStream >> first >> second >> third;
outStream << "The sum of the first 3 nums is " << (first+second+third) << endl;
//make two operations on the 6 numbers
inStream >> first >> second >> third;
outStream << "The sum of the second 3 nums is " << (first+second+third) << endl;
inStream.seekg(0); //4 different ways to force the program to go back to the beginning of the file
//2. inStream.seekg(0, ios::beg);
//3. inStream.seekg(0, inStream.beg);
//4. inStream.close(); inStream.open("infile.txt");
//I have tried all four of these lines and only #4 works.
//There has got to be a more natural option than just
//closing and reopening the file. Right?
inStream >> first >> second >> third;
outStream << "And again, the sum of the first 3 nums is " << (first+second+third) << endl;
inStream.close();
outStream.close();
return 0;
}
Может быть, я не понимаю совершенно, как работает поток, но я видел несколько источников, которые считают, что seekg (0) следует переместить указатель назад в начало файла. Вместо этого я из этого выхожу.
Сумма первого 3 НУМСА 8
Сумма второго 3 НУМСА 14
И опять же, сумма первого 3 НУМСА является 14
Он вернулся, но не так, как я бы надеялся. Любая идея, почему это произошло? Почему мои первые три попытки потерпели неудачу?
Что такое 'infile.txt'? В частности, каковы цифры? – Tushar
@Tushar. Что еще более важно, каково его содержание в дополнение к цифрам. Должно быть больше, так как вам нужно пустое пространство для разделения чисел. Если файл заканчивается на '' \ n'' (который должен быть, если это текстовый файл), то все, кроме первого метода, который он использует, гарантируется стандартом (и первый будет работать и на практике). –
Также важным является используемый им компилятор/библиотека. C++ 11 определяет 'seekg' иначе, чем C++ 03. –