Попробуйте fRead >> std::noskipws
.Оператор >>
для потоков чтения пропускает пробелы, чтобы перейти к следующим «интересным» данным.Рассмотрим входной поток, такой как hi there
.Считая, что std::string
за раз, вы получите hi
и there
, игнорируя пробел.Одновременно, читая, что символ за раз, вы получаете -hithere- с пропущенным символом пробела.
Байты, которые вы не могли прочитать из fRead, считались пробелом, поэтому они все игнорировались.
Причина, по которой fRead.read()
является решением (и хорошим), заключается в том, что он выполняет неформатированный ввод - ему нет дела до пробелов.
Наконец, вы должны сделать эти другиеизменения в вашей программе:
#include <iostream> // you need this for std::cout and std::endl
Вам нужно iostream
для std::cout
и std::endl
.
fRead.open ("./_ test_data / test.txt", fstream:: in | fstream :: binary);
Вам нужно открыть тестовый файл в двоичном формате (как для записи, так и для чтения), если в нем будут какие-либо непечатные символы.