2016-03-23 18 views
-1
#include<iostream> 
#include<fstream> 
using namespace std; 
int main() 
{ 
    char ch1; 
    char ch = 'A'; 
    fstream fileout("data.dat",ios::out); 
    fileout << ch; 
    int p = fileout.tellg(); 
    cout << p; 
} 

1 döndürür. Geri dönmemelidir 0? 'A' dosyadaki sıfır bayt mı?Tellg işlevinin çalışmasını anlamak istemiyorum

+0

Dosyanızı yalnızca yazma erişimi ile açtığınız için bu durumda 'tellp 'kullanmalısınız. 'tellg' burada hiçbir anlam ifade etmeyen ve muhtemelen tanımlanamayan bir giriş pozisyonu göstergesini döndürüyor: * Temel sınıf fonksiyon imzası için gerekli olan openmode argümanı ** genellikle yok sayılır ** çünkü std :: basic_filebuf sadece bir dosya tutuyor konum * - cppreference.com – BeyelerStudios

+0

@Olaf Soru cs.se adresinden taşındı. –

cevap

0

Dosyada artık bir bayt var. tellg, bir sonraki okuma/yazma işleminin gerçekleşeceği dosyadaki konumu verir (yalnızca bir konum işaretçisi vardır), bu da (bayt) 1 olur.

Not: Sonuç için streampos kullanmalısınız.

İlgili konular