std::getline() возвращает адрес памяти при использовании cout

#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).