我使用seekg和tellg找到了长度,然后将它们读入unsigned char *。调试器显示的文本不正确。
ifstream is (infile, ifstream::binary);
//find length
is.seekg (0, is.end);
int length = is.tellg();
is.seekg (0, is.beg);
char * buffer = new char [length];
is.read (buffer,length);
//delete[] buffer; removed
//size_t cipherTextLength = length; removed
//unsigned char* cipherText = new unsigned char[cipherTextLength]; removed
//is.read (reinterpret_cast<char*>(cipherText),length); removed
编辑:
文本文件是这样的:
.l F4"w2ÍögPl Ð l œ›” ÿÿÿPl (goes on)
调试器显示如下内容:
ÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍýýýý««««««««þîþîþîþ
编辑:现在textfile只显示. l
,调试器显示.\xl
答案 0 :(得分:0)
我认为你没有将\0
添加到缓冲区。我确实遇到了同样的问题,并通过adding
+1
解决了这个问题。
char *buffer = new char [length + 1];
buffer[length] = 0; // Adding terminating character in content.
iFileStream.read(buffer, length);
std::string str(buffer);
现在str
应该是正确的。希望这会有所帮助。
答案 1 :(得分:0)
因为你的代码if.read可以获得文件二进制文件。你的程序是字符串输出,除了。您可以使用缓冲区中的%c打印字符