我正在为我的代码编写一个函数 该函数只需要一个打开的文件来处理。
这里是函数的代码:
void printFile(std::ifstream &file)
{
file.seekg(0, file.end);
int length = file.tellg();
file.seekg(0, file.beg);
char *buffer = new char[length];
file.get(buffer, length);
file.seekg(0, file.beg);
char c;
int i = 0;
std::cout << "Uncreypted file" << std::endl;
while (file.get(c))
{
// loop getting single characters
std::cout << c << " " << buffer[i] << " ";
i++;
}
std::cout << std::endl;
delete[] buffer;
}
结果很奇怪:
未加密的文件,这是我自己的问题 t = t = h = i = s = = i = s = = a = = l = i = g = n =
在一行之后,缓冲区输出的内容与file.get.(c)
工作原因不同,原因是什么?
这是因为the carriage return ascii letter
?
答案 0 :(得分:3)
在一行之后缓冲区输出不同的
那是因为您没有阅读您使用过的功能的文档。
[uc,vc]
默认停在第一个换行符(ref)。
因此,您的file.get(buffer, length)
仅包含文件的第一行
您的其他buffer
次访问正在废话。
了解how best to read a whole file into a string in C++。
并且不要编程“盲目”,然后当你的程序没有做你想做的事时会感到惊讶;
阅读文档!