Dosya taraması giriş dosyası Bir dosyadan - fopen ve ifstream - metin girişi için iki yol buldum. Aşağıda iki parçacığı vardır. Okuması gereken bir tam sayı içeren bir satırdan oluşan bir metin dosyası var. Fopen mi yoksa ifstream mi kullanmalıyım?Bir metin dosyası okuma - fopen vs. ifstream
SNIPPET 1 - FOPEN
FILE * pFile = fopen ("myfile.txt" , "r");
char mystring [100];
if (pFile == NULL)
{
perror ("Error opening file");
}
else
{
fgets (mystring , 100 , pFile);
puts (mystring);
fclose (pFile);
}
SNIPPET 2 - lfStream
string line;
ifstream myfile ("example.txt");
if (myfile.is_open())
{
while (myfile.good())
{
getline (myfile,line);
cout << line << endl;
}
myfile.close();
}
else
{
cout << "Unable to open file";
}
Neden stream_reader (dosya * akışı) geçersiz olmaz {fgets (satır, len, akış); koyar (hat); } 'esas olarak aynı mı? –
Fopen veya tmpfile çağrılmadan 'FILE *' oluşturmak mümkün mü? Buna inanmıyorum ama yanılıyor olabilirim. "Stream_reader" işlemi yalnızca bir dosya değil, bir akış gerektirdiğinden, bir dosyaya "FILE *" gereksinimi duyarak bunu aşmayı tercih etmemekteyim. Ünite testlerinde, örneğin bir 'FILE *' yerine dize akışını iletmek daha kolay olabilir. –
Evet, bu perspektiften, C versiyonu daha sıkı bir şekilde kısıtlanmıştır - en azından standartta bir dosyadan ziyade bir dizgeye karşılık gelen 'FILE *' için herhangi bir hüküm yoktur (bazı kütüphaneler En azından dahili olarak, biraz zaman). Bundan * gerçekten * kaçınmanız gerekiyorsa, bir işaretçiyi yazmayı yapmak için bir işleve aktarabilirsiniz, ancak kesinlikle daha sessizdir. –