[英]difference betwen file.get(char c) and file.get(char *c, int length)
我正在为我的代码编写一个函数。
该功能只需要一个打开的文件即可处理。
这里的功能代码:
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;
}
结果很奇怪:
未加密的文件
thhiissiissaatteesstt
═════════
在一行之后,缓冲区输出与file.get.(c)
工作的地方不同的东西,为什么?
这是因为the carriage return ascii letter
吗?
一行后,缓冲区输出不同的东西
这是因为您没有阅读所用功能的文档。
默认情况下file.get(buffer, length)
在第一个换行处停止 ( ref )。
因此, buffer
仅包含文件的第一行。
您的其他buffer[i]
访问正在废话。
阅读有关如何最好地在C ++中将整个文件读入字符串的信息 。
而且,不要编写“盲目”程序,然后在程序没有执行所需的操作时感到惊讶;
阅读文档 !
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.