我正在尝试使用以下代码读取文本文件:
void function readfile(char *inputfile) {
istream is;
int filesize = 0;
is.open(inputfile);
if (!is.is_open()) {
return;
}
is.seekg(0, ios::end);
filesize = (int)is.tellg();
is.seekg(0, ios::beg);
char *buf = new char[filesize];
is.read(buf, filesize);
is.close();
cout << buf << endl;
delete[] buf;
return;
}
虽然在 g++ (mac / macports) 中它可以正常工作(将所有内容放入动态分配的 char* 数组中),但在 Visual Studio C++ 2010 中,我得到了这种类型的持续错误:Debug assertion failed: (unsigned)(c+1) <= 256, file isctype.c
.
问题是它打开文件但找不到终止分隔符,所以当它到达 eof 时,它开始在其他地方读取(垃圾字符)。使用cout << buf;
我可以看到该文件在 mac 中被正确读取,但在 Visual c++ 中它键入更多垃圾字符。这里有什么问题?