#c #c 11
#c #c 11
Вопрос:
Когда оператор cout выполняется, он возвращает адрес памяти.
string data = "Test String ";
string info;
ofstream file("data.dat", ios::binary);
ifstream fileI("data.dat", ios::binary);
file << data;
file.close();
cout << getline(fileI, data); // returns a memory address
Почему это происходит?
Комментарии:
1. Обратите внимание, что
getline
as используется здесь для поиска символа новой строки. Двоичный файл не передает трафик в новых строках. Используйте текстовые файлы для ввода-вывода, ориентированного на текст.
Ответ №1:
Сама getline
функция возвращает входной поток из заданного первого аргумента ( fileI
в вашем коде). Результат сохраняется во 2-м аргументе ( data
в вашем коде). Итак, вам нужно сначала выполнить getline(fileI, data)
, а затем вывести строку data
.
string data = "Test String ";
string info;
ofstream file("data.dat", ios::binary);
ifstream fileI("data.dat", ios::binary);
file << data;
file.close();
getline(fileI, data);
cout << data;
return 0;
Также смотрите Документацию getline
Ответ №2:
std::getline возвращает ссылку на входной поток. Поток не может быть отправлен в другой поток напрямую, но он может быть преобразован в указатель void (до c 11).