我做了一個示例項目,將文件讀入緩沖區。當我使用tellg()函數時,它給我的值大于實際從文件中讀取的read函數的值。我認為有一個錯誤。這是我的代碼:編輯:void read_file (const char* name, int *size , char*& buffer){ ifstream file; file.open(name,ios::in|ios::binary); *size = 0; if (file.is_open()) { // get length of file file.seekg(0,std::ios_base::end); int length = *size = file.tellg(); file.seekg(0,std::ios_base::beg); // allocate buffer in size of file buffer = new char[length]; // read file.read(buffer,length); cout << file.gcount() << endl; } file.close();}主要:void main(){ int size = 0; char* buffer = NULL; read_file("File.txt",&size,buffer); for (int i = 0; i < size; i++) cout << buffer[i]; cout << endl; }
3 回答

飲歌長嘯
TA貢獻1951條經驗 獲得超3個贊
void read_file (int *size, char* name,char* buffer)
*buffer = new char[length];
這些行的確看起來像個錯誤:創建一個char數組并將其保存到buffer [0] char。然后,您讀取要緩沖的文件,該文件仍未初始化。
您需要buffer通過指針傳遞:
void read_file (int *size, char* name,char** buffer)
*buffer = new char[length];
或通過引用(這是c ++的方式,并且不太容易出錯):
void read_file (int *size, char* name,char*& buffer)
buffer = new char[length];
...
- 3 回答
- 0 關注
- 632 瀏覽
添加回答
舉報
0/150
提交
取消