Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Ошибка остриминга. Кто-нибудь может отладить это?

Автор вопроса: InvictusОтветов: 3

Я хочу, чтобы следующие значения были записаны в файл с помощью ostream???

int main ()
{
  FILE * pFile;
  pFile = fopen ("myfile.txt","w");
  if (pFile!=NULL)
  {
    fputs ("fopen example",pFile);
    fclose (pFile);
  }
  pFile<< "r "<<" " <<"ggjjsss" <<'_'<<"gggjj"<< " " << "HLLO " <<endl;
}

Я получаю следующую ошибку.. ошибка: недопустимые операнды типов 'FILE*' и 'const char [3]' для двоичного 'operator‹‹'

c++filestreamiostream

Ответы

Ответ 1 · рейтинг 2 · iammilind

Поскольку вы имеете дело с FILE, я бы сказал, что это ошибка ofstream, а не ошибка ostream. :) FILE - файловый ввод-вывод в стиле C, для которого operator << не перегружен.

Вы должны использовать объект ofstream, для которого operator << перегружен в библиотеке.

#include<fstream>

ofstream File("myfile.txt");
File<< "r "<<" " <<"ggjjsss" <<'_'<<"gggjj"<< " " << "HLLO " <<endl;

Ответ 2 · рейтинг 2 · Patrick B.

FILE * не является ostream в смысле стандартной библиотеки C++. Вместо этого используйте fstream (или ofstream). См. пример здесь: ссылка на cplusplus.com fstream

Ответ 3 · рейтинг 1 · friendzis

Ты смущен. В классическом смысле C "поток" - это просто то, из чего вы можете читать/записывать. В С++ "потоки" - это специальные объекты, которые соответствуют очень специфическому интерфейсу.

Оператор потока ‹‹ доступен только в C++, поэтому было бы очень логично не ожидать, что он будет работать с классическими библиотеками C.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы