我编写了一个非常简单的程序来读取一个块中的文本文件的内容并将其保存到缓冲区中,然后显示该缓冲区的内容以及缓冲区的大小,尽管我在 Windows 7 中编译了确切的代码它只是工作很好但是每当我在我的mac上编译它时根本没有缓冲区输出,缓冲区的大小返回-1,我在编译期间没有收到任何错误
myfile.txt 内容
你好世界 !!!
ABCDEFGHI ... Z
abcdefghi ... z
我的代码
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main ()
{
fstream myfile;
myfile.open("myText.txt");
myfile.seekg(0,ios::end);
long int size = myfile.tellg();
myfile.clear();
myfile.seekg(0,ios::beg);
char* buffer = new (nothrow) char[size];
myfile.read(buffer,size);
myfile.close();
for (int i = 1; i < size;i++ )
if ((buffer[i]>= 65 && buffer[i] <=90) || (buffer[i] >= 97 && buffer[i] <= 122) || buffer[i] == ' ' || buffer[i]== '\n')
cout << buffer[i];
cout << size;
delete [] buffer;
getchar();
return 0;
我通过以下方式检查了文件读取操作:
if(myfile.good() == false)
cout << "Error openning the file \n";
if(myfile.bad() == true)
cout << "Read/writing error on i/o operation \n";
if (myfile.fail() == true)
cout <<"Logical error on i/o operation \n";
我的输出:
打开文件时出错
i/o 操作的逻辑错误
-1