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

#c #filestream #iostream

#c #filestream #iostream

Вопрос:

Я хочу, чтобы следующие значения были записаны в файл с помощью 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]’ в двоичный ‘оператор<<‘

Ответ №1:

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

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

 #include<fstream>

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

Комментарии:

1. Я получаю следующую ошибку, что это значит?? или: переменная ‘std:: ofstream File’ имеет инициализатор, но неполный тип

2. #include <fstream> должен помочь.

3. @Invictus, ты #include<fstream> уже наверху?

Ответ №2:

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

Комментарии:

1. Есть ли какой-нибудь способ, которым я могу использовать ostream для записи в файл??

2. @Invictus, <fstream> библиотека уже предоставляет ofstream fstream , ifstream ); которые предназначены для обработки файлов C .

Ответ №3:

Вы в замешательстве. В классическом смысле C «поток» — это просто то, что вы можете читать / записывать. В c «потоки» — это специальные объекты, которые соответствуют очень специфическому интерфейсу.

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