ostream hatası. Kimse bunu hatalandırabilir mi?

Aşağıdaki değerleri ostream kullanarak dosyaya yazılmasını istiyorum ???

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

I am getting the following error.. error: invalid operands of types 'FILE*' and 'const char [3]' to binary 'operator<<'

1

3 cevap

FILE * is not a ostream in the sense of C++'s standard library. Use fstream instead (or ofstream). Look here for an example: cplusplus.com's fstream reference

2
katma
Bir dosyaya yazmak için ostream kullanmanın bir yolu var mı?
katma yazar Invictus, kaynak
@Invictus, kütüphanesi zaten ofstream (ve fstream , ifstream ); C ++ dosya işleme için kullanılır.
katma yazar iammilind, kaynak

Since you are dealing with FILE, I would say it's an ofstream error rather than ostream error. :) FILE is a C-style file i/o for which operator << is not overloaded.

You should use ofstream object for which the operator << is overloaded in the library.

#include

ofstream File("myfile.txt");
File<< "r "<<" " <<"ggjjsss" <<'_'<<"gggjj"<< " " << "HLLO " <
2
katma
Aşağıdaki hatayı alıyorum, bu ne anlama geliyor? veya: değişken 'std :: ofstream File' başlatıcısı ancak tamamlanmamış
katma yazar Invictus, kaynak
#include yardımcı olmalıdır.
katma yazar Patrick B., kaynak
@Invictus, üstte #include var mı?
katma yazar iammilind, kaynak

Kafanız karıştı. Klasik C anlamında "akış" sadece okuma/yazma için okuyabileceğiniz bir şeydir. C ++ "akışlarında", çok özel bir arabirime uyan özel nesnelerdir.

Stream operator << is available only in C++, therefore it would very logical not to expect it to work on classic C libraries

1
katma