Каждый раз я читал в fstream, я получил 1 дополнительный символ в конце, Как я могу избежать этого?
Править:
ifstream readfile(inputFile);
ofstream writefile(outputFile);
char c;
while(!readfile.eof()){
readfile >> c;
//c = shiftChar(c, RIGHT, shift);
writefile << c;
}
readfile.close();
writefile.close();
Обычно это происходит из-за неправильной проверки конца файла. Обычно вы хотите сделать что-то вроде:
while (infile>>variable) ...
или:
while (std::getline(infile, whatever)) ...
но НЕ:
while (infile.good()) ...
или:
while (!infile.eof()) ...
Edit: Первые два выполняют чтение, проверяют, не произошло ли это, и если да, то выходят из цикла. Два последних выполняют попытку чтения, обрабатывают то, что было "прочитано", и затем выходят из цикла на следующей итерации, если предыдущая попытка не удалась.
Edit2: чтобы легко скопировать один файл в другой, используйте что-то вроде этого:
// open the files:
ifstream readfile(inputFile);
ofstream writefile(outputFile);
// do the copy:
writefile << readfile.rdbuf();
Судя по коду, похоже, что вы пытаетесь скопировать содержимое одного файла в другой?
Если так, то я бы попробовал что-то вроде этого:
ifstream fin(inputFile, ios::binary);
fin.seekg(0, ios::end);
long fileSize = fin.tellg();
fin.seekg(0, ios::beg);
char *pBuff = new char[fileSize];
fin.read(pBuff, fileSize);
fin.close();
ofstream fout(outputFile, ios::binary)
fout.write(pBuff, fileSize);
fout.close;
delete [] pBuff;