我嘗試使用下面的代碼讀取一個文本文件中的垃圾字符:麻煩,在Visual C++文件讀取
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++中它輸入了更多的垃圾字符。這裏有什麼問題?
非常有見識的sehe。我實際上正在努力實現它,因爲它是我的課程指導的(這是程序的一部分)。問題是我們不允許使用字符串類,並且我一直在更多地在我的Mac上進行練習,而不是在視覺工作室所在的PC上(並且應該是主要的IDE)。我最感興趣的是由mscompiler生成的錯誤,並從g ++傳遞。 – Panagiotis
@Panagiotis那麼,使用該矢量然後:/要做到這一點(使用'vector','std :: cout.write' _and_滿足MSVC)看到更新的答案(也[在線直播](http://coliru.stacked -crooked.com/a/e257bf50affa21da)) – sehe