C++ file.get(char c)和file.get(char*c,int-length)之间的差异
我正在为我的代码编写一个函数。C++ file.get(char c)和file.get(char*c,int-length)之间的差异,c++,file,ifstream,C++,File,Ifstream,我正在为我的代码编写一个函数。 该函数只需要打开一个文件即可处理 下面是函数的代码: 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
该函数只需要打开一个文件即可处理 下面是函数的代码:
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;
}
void打印文件(std::ifstream&file)
{
seekg(0,file.end);
int length=file.tellg();
file.seekg(0,file.beg);
字符*缓冲区=新字符[长度];
get(缓冲区、长度);
file.seekg(0,file.beg);
字符c;
int i=0;
标准::cout
在一行之后,缓冲区输出不同的内容
这是因为您没有阅读所使用函数的文档
file.get(缓冲区,长度)
默认情况下在第一个换行符处停止
因此,您的缓冲区只包含文件的第一行。
你的另一个缓冲区[i]
访问是胡说八道
了解
不要“盲目”编程,当你的程序没有达到你想要的效果时,表现出惊讶的样子;
阅读文档!这段代码让我心碎。您阅读了文档吗?阅读get(char*c,int-length)
的文档。它不仅仅从输入流中读取length
字符。它做了一些不同的事情。您不需要stackoverflow.com来查找get()的文档它应该在你的C++书中。是的,谢谢你的帮助,对不起,想走得太快!@ MuxiLiNeNaAK:希望这是一个宝贵的教训!